【问题标题】:How to "force" a file's ISO-8859-1ness?如何“强制”文件 ISO-8859-1 ness?
【发布时间】:2011-03-13 23:47:21
【问题描述】:

我记得当我曾经在日本开发网站时 - 货币中存在三种不同的字符编码 - 开发人员有一个技巧来“强制”源文件的编码,以便它始终在他们的 IDE 中以正确的方式打开编码。

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

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

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

那么,是否有任何类型的字符技巧(就像我上面提到的那样)来做到这一点?还是其他方法?

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

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

【问题讨论】:

  • 不能在编辑器中使用设置吗?我们很难知道,因为你忽略了它是哪个编辑器的重要信息......
  • 啊哈~,这是 Linux 上的“Bluefish”编辑器 (1.0.7)
  • 我同样喜欢这两个答案。很难选择最佳答案。还没有真正尝试过这两种方法,所以这可能会改变事情!
  • zOMG,升级到 Bluefish 2.0.1(我不知道,因为 OpenSUSE 将 Bluefish 放在了一个愚蠢的存储库中)似乎并没有首先产生原始问题。 ;^_^

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


【解决方案1】:

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

【讨论】:

    【解决方案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 编码的文件当然需要消失并消亡。 :-)

    【讨论】:

    • 原始技术性的最佳答案,因为“使用不同的编辑器”(有点)原来是最好的解决方案!我很尴尬和谦卑;-)
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2012-01-13
    • 2012-07-23
    • 2017-08-13
    • 2015-10-11
    相关资源
    最近更新 更多