Как "заставить" файл ISO-8859-1ness? - PullRequest
5 голосов
/ 09 июля 2010

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

То, что они сделали, это поместили комментарий вверху файла, содержащего японский символ, который только существовал в этой конкретной кодировке символов - его не было ни в одном другом! Это сработало отлично.

Я помню это, потому что теперь у меня есть похожая, хотя и англоязычная, проблема.

У меня есть некоторые файлы, которые ДОЛЖНЫ быть ISO-8859-1, но продолжают открываться в моем редакторе (Bluefish 1.0.7 для Linux) как UTF-8. Обычно это не проблема, КРОМЕ символов фунта (£) и еще много чего. Не поймите меня неправильно, я могу исправить файл и снова сохранить его как ISO-8859-1, но я хочу, чтобы всегда открывался как ISO-8859-1 в моем редакторе.

Итак, есть ли какие-нибудь хаки персонажей - как я упоминал выше - для этого? Или любые другие методы?

PS. Сторонники Юникода / евангелисты не должны тратить свое время, пытаясь обратить меня, потому что я уже один из них! Это старая шаткая система, которую я унаследовал: - (

PPS. Пожалуйста, не говорите «используйте другой редактор», потому что я старый пердун и настроен по-своему: -)

Ответы [ 2 ]

3 голосов
/ 09 июля 2010

Обычно, если у вас есть £, закодированный как ISO-8859-1 (т. Е. Один байт 0xA3), это не будет частью действительной последовательности байтов UTF-8, если вам не повезло, и это идет сразу после другого набора топ-битов таким образом, чтобы заставить их работать вместе как последовательность UTF-8. (Вы можете избежать этого, поставив £ в верхней части файла.)

Так что ни один редактор не должен открывать такие файлы, как UTF-8; в противном случае он потерял бы £ полностью. Если ваш редактор делает это, «используйте другой редактор» - серьезно! Если ваша проблема заключается в том, что ваш редактор загружает файлы, которые не содержат £ или любые другие символы, отличные от ASCII, как UTF-8, в результате чего любые новые £, добавленные вами, будут сохранены как UTF-8 впоследствии, затем снова простое добавление символа £ самостоятельно в начало файла, безусловно, должно остановить это.

То, что вы не можете обязательно сделать, это заставить редактор загрузить его как ISO-8859-1, в отличие от любого другого набора символов, в котором допустимы все одиночные байты верхнего бита. Это только многобайтовые кодировки, такие как UTF-8 и Shift-JIS, которые можно исключить, используя последовательности байтов, которые недопустимы для этой кодировки.

В Windows обычно происходит то, что редактор загружает файл, используя системную кодовую страницу по умолчанию, обычно 1252 на западном компьютере. (На самом деле не совсем то же самое, что ISO-8859-1, но близко.)

В некоторых редакторах есть функция, с помощью которой вы можете дать им подсказку, какую кодировку использовать с комментарием в первой строке, например. для vim:

# vim: set fileencoding=iso-8859-1 :

Синтаксис будет варьироваться от редактора к редактору / конфигурации. Но это обычно довольно уродливо. Могут существовать другие элементы управления для изменения кодировок по умолчанию на основе каталогов, но поскольку мы не знаем, что вы используете ...

В долгосрочной перспективе файлы, хранящиеся в формате ISO-8859-1 или в любой другой кодировке, отличной от UTF-8, конечно же, должны исчезнуть и умереть. : -)

0 голосов
/ 09 июля 2010

Вы можете поместить символ ÿ (0xFF) в файл. Это недействительно в UTF8. BBEdit на Mac правильно идентифицирует его как ISO-8859-1. Не уверен, как поступит ваш выбранный редактор.

...