7

我记得当我曾经在日本开发网站时——那里有三种不同的货币字符编码——开发人员有一个技巧来“强制”源文件的编码,因此它总是在他们的 IDE 中以正确的编码打开。

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

我记得这一点,因为现在我有一个类似的,尽管是英语的,问题。

我有一些文件必须是 ISO-8859-1,但在我的编辑器(Linux 上的 Bluefish 1.0.7)中以 UTF-8 格式打开。这通常不是问题,除了英镑 (£) 符号等。不要误会我的意思,我可以修复文件并再次将其另存为 ISO-8859-1,但我希望它在我的编辑器中始终以 ISO-8859-1 格式打开。

那么,是否有任何类型的字符黑客 - 就像我上面提到的 - 来做到这一点?还是有什么其他方法?

PS。Unicode 倡导者/布道者不必浪费时间试图改变我的信仰,因为我已经是他们中的一员了!这是我继承的一个摇摇晃晃的旧系统:-(

聚苯乙烯。请不要说“使用不同的编辑器”,因为我是个老屁并且以我的方式设置:-)

4

2 回答 2

5

通常,如果您有一个£编码为 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 编码的文件当然需要消失和死亡。:-)

于 2010-07-09T17:16:07.013 回答
0

您可以将字符ÿ(0xFF)放入文件中。它在 UTF8 中无效。Mac 上的 BBEdit 正确地将其识别为 ISO-8859-1。不确定您选择的编辑器会如何做。

于 2010-07-09T17:18:59.087 回答