Java: невозможно сохранить в UTF-8 - PullRequest
0 голосов
/ 22 июля 2011

У меня есть эта строка кода в Java:

new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name, append), "UTF-8"));

Этот писатель не пишет файл UTF-8, потому что, когда я открываю его в notepad ++, он говорит, что кодировка: ANSI как UTF-8. Мне нужно, чтобы он был чистым UTF-8.

У вас есть предложения?

Ответы [ 3 ]

11 голосов
/ 22 июля 2011

notepad ++ (и любой другой инструмент) может только угадать кодировку, она не записана нигде в вашем файле (или в некоторых метаданных).

И если текст, который вы написалине содержит символов вне диапазона ASCII (т. е. ни один символ с кодовой точкой Unicode> 127), то файл с кодировкой ANSI неотличим от файла в кодировке UTF-8.

6 голосов
/ 22 июля 2011

Notepad ++ использует эвристический алгоритм для обнаружения кодировки, то есть обнаруженная кодировка может отличаться от истинной (это думаю ).

В этом случае Notepad ++ верен, нонеправильная маркировка кодировки.ANSI as UTF-8 - это в чистом виде UTF-8, только без спецификации .

0 голосов
/ 22 июля 2011

Скорее всего, Notepad ++ нужна спецификация в начале вашего файла. Сначала запишите байты EF BB BF в ваш файл, затем закодированные символы.

...