2015-01-15 3 views
0

Когда я создаю файл с кодировкой UTF-8 в Java, и я открываю его в «Блокноте» или «Блокнот +», после чего он говорит, что он кодируется ANSI. Как так?Записать файл UTF-8 в Java

Если я пишу некоторые специальные символы, такие как Æ. Ø или Å в файл, тогда блокнот говорит, что кодируется UTF-8. Почему это?

Является ли представление байтов ANSI и UTF-8 одинаковым, если не включены специальные символы?

+0

Поскольку вы используете Java 7+, вы должны использовать [java.nio.file] (http://java7fs.wikia.com/wiki/Using_the_java.nio.file_API) вместо 'File' – fge

ответ

3

UTF-8 и ANSI имеют аналогичное байтовое кодирование для первых 127 символов [1]. Поэтому, если вы не используете других персонажей, нет никакого способа сказать разницу.

Единственный способ сказать, что это UTF-8 является добавление Byte-Order-Mark, который представляет собой набор специальных умыслом байтов, Markt кодировку файла:

UTF-8 представление спецификация представляет собой последовательность байтов 0xEF,0xBB,0xBF.

[1] ЮНИКОДу символы U + 0000..U + 007F, которые имеют двоичные представления в UTF-8 и ASCII в качестве одного байта, и все имеют старший бит 0.

+1

Uhm, нет, спецификация не является единственным способом; просто используйте UTF-8 все время, и это все – fge

+0

@fge Если вы используете только младшие 7 бит символов (ascii), ANSI и UTF-8 точно подобны. – RobAu

+0

Что касается спецификации, это также кодовая точка Юникода; [U + FEFF] (http://www.fileformat.info/info/unicode/char/feff/index.htm), если быть точным. – fge

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