如何"强制"文件的ISO-8859-1ness?

Dou*_*gal 6 ide unicode iso-8859-1 character-encoding

我记得当我以前在日本开发网站时 - 有三种不同的字符编码货币 - 开发人员有一个技巧来"强制"编码源文件,所以它总是在他们的IDE中以正确的编码打开.

他们所做的是在包含日语字符的文件顶部放置注释,该日语字符仅存在于该特定字符编码中 - 它不在任何其他字符编码中!这非常有效.

我记得这一点,因为现在我有一个类似的,虽然是英语国家的问题.

我有一些文件必须是ISO-8859-1,但在我的编辑器(Linux上的Bluefish 1.0.7)中保持打开为UTF-8.除了磅(£)符号和诸如此类的东西之外,这通常不是问题.不要误会我的意思,我可以修复文件并将其另外保存为ISO-8859-1,但我希望它始终在我的编辑器中以ISO-8859-1打开.

那么,有没有任何类型的角色黑客 - 就像我上面提到的 - 这样做?还是其他任何方法?

PS.Unicode倡导者/福音传道者不必浪费时间试图转换我,因为我已经是其中之一!这是我继承的摇摇欲坠的旧系统:-(

PPS.请不要说"使用不同的编辑器"因为我是一个老屁并按我的方式设置:-)

bob*_*nce 5

通常,如果您将£编码为 ISO-8859-1(即单个字节 0xA3),则它不会构成有效 UTF-8 字节序列的一部分,除非您不走运并且它紧随另一个顶部 -位集字符,使它们作为 UTF-8 序列一起工作。(您可以通过£在文件顶部单独放置 a来防止这种情况发生。)

所以没有编辑器应该打开任何像 UTF-8 这样的文件;如果这样做,它会£完全失去。如果你的编辑器这样做了,“使用不同的编辑器”——说真的!如果您的问题是您的编辑器正在加载包含£或任何其他非 ASCII 字符作为 UTF-8 的文件,导致£您添加到它们的任何新文件随后被保存为 UTF-8,然后再次,只需添加一个£字符自己到文件的顶部当然应该停止。

您不一定要做的是让编辑器将其加载为 ISO-8859-1,而不是所有单个 top-bit-set 字节都有效的任何其他字符集。它只是像 UTF-8 和 Shift-JIS 这样的多字节编码,您可以通过使用对该编码无效的字节序列来排除它们。

在 Windows 上通常会发生的是,编辑器将使用系统默认代码页加载文件,在西方机器上通常为 1252。(实际上与 ISO-8859-1 不完全相同,但很接近。)

一些编辑器有一个功能,你可以给他们一个提示,在第一行的注释中使用什么编码,例如。对于vim:

# vim: set fileencoding=iso-8859-1 :
Run Code Online (Sandbox Code Playgroud)

语法因编辑器而异。但它通常很丑陋。可能存在其他控件来更改基于目录的默认编码,但由于我们不知道您在使用什么......

从长远来看,存储为 ISO-8859-1 或任何其他非 UTF-8 编码的文件当然需要消失。:-)