Unicode 如何";强迫;一个文件&x27;s ISO-8859-1ness?

Unicode 如何";强迫;一个文件&x27;s ISO-8859-1ness?,unicode,character-encoding,ide,iso-8859-1,Unicode,Character Encoding,Ide,Iso 8859 1,我记得我曾经在日本开发过一个网站,那里有三种不同的货币字符编码。开发人员有一个技巧,可以“强制”对源文件进行编码,使其始终以正确的编码在IDE中打开 他们所做的是在文件的顶部添加一条注释,其中包含一个仅存在于该特定字符编码中的日语字符-其他任何字符编码中都没有!这很有效 我记得这一点,因为现在我有一个类似的问题,尽管是英语国家的问题 我有一些文件必须是ISO-8859-1,但在我的编辑器(Linux上的Bluefish 1.0.7)中继续以UTF-8打开。这通常不是问题,除了英镑符号之类的东西。

我记得我曾经在日本开发过一个网站,那里有三种不同的货币字符编码。开发人员有一个技巧,可以“强制”对源文件进行编码,使其始终以正确的编码在IDE中打开

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

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

我有一些文件必须是ISO-8859-1,但在我的编辑器(Linux上的Bluefish 1.0.7)中继续以UTF-8打开。这通常不是问题,除了英镑符号之类的东西。别误会,我可以修复该文件并将其再次保存为ISO-8859-1,但我希望它在我的编辑器中始终以ISO-8859-1的形式打开

那么,有没有像我上面提到的那样的角色黑客可以做到这一点呢?还是其他方法

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


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

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

因此,任何编辑器都不应该打开UTF-8这样的文件;如果它这样做了,它将完全丢失
)。如果你的编辑这样做,“使用不同的编辑器”-真的!如果您的问题是编辑器正在加载不包含UTF-8的
或任何其他非ASCII字符的文件,导致您添加到这些文件中的任何新
在以后保存为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编码的文件需要消失并消亡,当然。:-)

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

您不能在编辑器中使用设置吗?我们很难知道,因为您忽略了它是哪个编辑器的重要信息…啊哈~这是LinuxI上的“蓝鱼”编辑器(1.0.7),两个答案一样。很难选择最佳答案。实际上还没有尝试过这两种方法,所以这可能会改变一切!zOMG,升级到Bluefish 2.0.1(我不知道,因为OpenSUSE将Bluefish放在了一个愚蠢的存储库中)似乎一开始并没有造成最初的问题^_^对于原始技术性最好的回答,因为“使用不同的编辑器”(某种程度上)是最好的解决方案!我感到尴尬和谦卑;-)