2016-04-08 2 views
0

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

BufferedWriter w = Files.newWriter(file, Charsets.UTF_8); 
w.newLine(); 
StringBuilder sb = new StringBuilder(); 
sb.append("\"").append("éééé").append("\";") 
w.write(sb.toString()); 

Но это не работает. В конце мой файл не кодирует UTF-8. Я пытался сделать это при написании:

w.write(new String(sb.toString().getBytes(Charsets.US_ASCII), "UTF8")); 

Он сделал вопросительные знаки появляются везде в файле ...

я обнаружил, что там была ошибка относительно признания первоначальной спецификации charcater (http://bugs.java.com/view_bug.do?bug_id=4508058), так Я попытался использовать класс BOMInputStream. Но bomIn.hasBOM() всегда возвращает false, поэтому я думаю, что моя проблема не связана с BOM?

Вы знаете, как я могу сделать свой файл закодированным в UTF-8? Была ли проблема решена в Java 8?

+1

Мне трудно понять, какова ваша фактическая проблема. Пожалуйста, покажите реальный код, ввод и вывод. UTF-8 отлично работает на Java и, конечно же, 'sb.toString(). GetBytes (Charsets.US_ASCII)' будет выдавать много вопросительных знаков, так как US_ASCII поддерживает только символы 0 .. 127, все остальное недействительно и заменяется на вопросительный знак. Также запрещается использование спецификации с UTF-8. –

+0

Уверен, что он работает. С созданным «BufferedWriter» вы можете просто сделать w.write («Hello, äöå»); w.close(); 'и я гарантирую, что файл будет кодироваться в кодировке UTF-8. – Kayaman

+0

«Это заставило знаки вопроса появляться повсюду в файле ...» - так что проблема в том, где вы просматриваете файл. – Gimby

ответ

1

Вы пишете UTF-8 правильно в первом примере (хотя вы избыточно создания строки из строки)

Проблема заключается в том, что зритель или инструмент, который вы используете для просмотра файла Безразлично Не читайте файл как UTF-8.

Не смешивайте в ASCII, который просто преобразует все байты без ASCII в вопросительные знаки.

Смежные вопросы