Как “вызвать” файл ISO-8859-1ness?

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

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

Я помню это, потому что теперь у меня есть подобное, хотя Англофон, проблема.

У меня есть некоторые файлы, которые ДОЛЖНЫ быть ISO-8859-1, но продолжать открываться в моем редакторе (Голубая рыба 1.0.7 на Linux) как UTF-8. Это обычно не проблема ЗА ИСКЛЮЧЕНИЕМ фунта (£) символы и этажерка. Не понимайте меня превратно, я могу зафиксировать файл и сохранить его снова как ISO-8859-1, но я хочу, чтобы он всегда открылся как ISO-8859-1 в моем редакторе.

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

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

PPS. Не говорите, "используют другого редактора", потому что я - старпер и набор в моих путях :-)

6
задан Chad 30 July 2015 в 16:27
поделиться

2 ответа

Обычно, если у вас есть £, закодированный как 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, конечно же, должны исчезнуть и умереть :-)

.
4
ответ дан 17 December 2019 в 06:59
поделиться

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

0
ответ дан 17 December 2019 в 06:59
поделиться