2013-08-09 4 views
4

У меня есть текстовый файл, это ANSI Encoding, я должен преобразовать его в кодировку UTF8.Как преобразовать ANSI в utf8 в java?

Мой текстовый файл, как это Stochastic programming is an area of mathematical programming that studies how to model decision problems under uncertainty. For example, although a decision might be necessary at a given point in time, essential information might not be available until a later time.

+0

'ANSI-кодировка - это несколько общий термин, используемый для обозначения стандартной кодовой страницы в системе. Другими словами, это будет зависеть от языка вашей системы. Если вы имеете в виду _ASCII_, текст уже есть, поскольку стандартные символы ASCII (<128) сопоставляются с той же кодировкой в ​​UTF-8. –

ответ

0

ASCII символов подмножества отображений в той же кодировке символов в UTF-8, так что файл на самом деле не нужно какого-либо преобразования.

Чтобы вывести файл в кодировке UTF-8, вы можете использовать:

PrintWriter out = new PrintWriter(new File(filename), "UTF-8"); 
out.print(text); 
out.close(); 
+0

Я пробую этот, но его не конвертировать из ASCII в UTF-8 –

+0

Я имею в виду, не должно быть ничего, чтобы преобразовать, действительно. Файл ASCII уже совместим с UTF-8. – Lake

+0

Извините, я имею в виду ANSI to UTF8 –

0

Вы можете попробовать это

InputStream inputStream = new BufferedInputStream(new FileInputStream("D:\\sample.txt")); 
    Reader reader = 
      new InputStreamReader(inputStream, Charset.forName("UTF-8")); 
5

Вы можете быть явно с классом java.nio.charset.Charset (окна-1252 является правильным названием ANSI):

public static void main(String[] args) throws IOException { 
    Path p = Paths.get("file.txt"); 
    ByteBuffer bb = ByteBuffer.wrap(Files.readAllBytes(p)); 
    CharBuffer cb = Charset.forName("windows-1252").decode(bb); 
    bb = Charset.forName("UTF-8").encode(cb); 
    Files.write(p, bb.array()); 
} 

Или в одной строке, если вы предпочитаете =)

Files.write(Paths.get("file.txt"), Charset.forName("UTF-8").encode(Charset.forName("windows-1252").decode(ByteBuffer.wrap(Files.readAllBytes(Paths.get("file.txt"))))).array());