Как избежать случайного кодирования файлов UTF-8 как ASCII / ANSI? - PullRequest
3 голосов
/ 17 декабря 2009

В процессе редактирования файла, закодированного как UTF-8 без [ложной] спецификации, в контенте может не быть символов Unicode, выходящих за пределы ASCII или ANSI. При следующем повторном открытии файла некоторые текстовые редакторы (Notepad ++) интерпретируют его как закодированный ASCII / ANSI и открывают как таковой. Не зная об изменениях, пользователь продолжит редактирование, теперь добавляя не-ANSI символы Unicode, которые, однако, оказываются бесполезными, так как сохраняются в ANSI. Может существовать пункт меню (Notepad ++), чтобы открывать файлы ANSI как UTF-8 без спецификации, но это ведет к обратной проблеме непреднамеренного переопределения файлов ANSI с кодировкой Unicode.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2009

Как бы вы посоветовали редактору определить разницу между ASCII / ANSI и UTF-8 без спецификации, если файлы выглядят одинаково?

Если вы хотите гарантированное распознавание UTF-8 как UTF-8, либо добавьте спецификацию, либо укажите, что файл содержит символы UTF-8.

2 голосов
/ 18 декабря 2009

Настройте ваш редактор так, чтобы он всегда использовал UTF-8, если это возможно, если нет, то пожаловаться создателям вашего редактора. Наборы символов, не предназначенные для Unicode, являются, IMO, устаревшими и должны рассматриваться как таковые.

Файлы, использующие только символы в пространстве ASCII (7-битный), в любом случае были бы почти такими же в UTF-8, поэтому, если вы ДОЛЖНЫ предоставить что-то в кодировке ASCII, просто не вводите символы Юникода.

2 голосов
/ 17 декабря 2009

Одним из обходных путей является добавление символа за пределы диапазона ANSI к комментарию в файле. В зависимости от алгоритма декодирования, он может заставить редактор (Notepad ++) распознать файл в кодировке UTF-8 без спецификации.

Например, в HTML-документе вы можете следовать определению кодировки в заголовке с таким комментарием в Юникоде, здесь UBREW LETTER ALEF U + 05D0: <! - א ->

...