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

时间:2010-07-09 16:53:50

标签: unicode character-encoding ide iso-8859-1

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

他们所做的是在包含日语字符的文件顶部发表评论,该日语字符存在于该特定字符编码中 - 它不属于任何其他字符!这非常有效。

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

通常情况下,如果你有£编码为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的编码当然都需要消失。 : - )

答案 1 :(得分:0)

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