我习惯于放入所有 XML 的第一行:
<?xml version="1.0" encoding="ISO-8859-1"?>
我几乎不假思索地这样做了,但后来我意识到西班牙语中的重音字母看起来很糟糕。例如,在 Chrome 中:
从那里,我使用以下方法解决了它:
<?xml version="1.0" encoding="utf-8"?>
然而,维基百科将ISO-8859-1定义为:
ISO 8859-1是 定义 拉丁字母编码的ISO 标准,包括变音符号(如重音字母、ñ、ç)和特殊字母(如ß、Ø),对于...
并列出所有西班牙语字符。
问
为什么它在 Chrome 中看起来很糟糕,我encoding
应该使用什么来包含西班牙语文本?
Chrome 将源编码文本显示为 ISO-8859-1 没有问题,但如果你没有明确告诉它,它无法猜测这是使用的编码。
考虑以下文件:
这是它在 Chrome 中的外观:
当然,这是假设用于生成文件的文本编辑器实际上已将其保存在 ISO-8859-1 中。
至于“我应该使用什么编码?”这个问题,这真的取决于上下文。如果 1) 文本的生成者和消费者就使用的编码达成一致,或者 2) 存在明确的机制来表明文本的编码是什么(
<?xml?>
XML 文件的指令,或者MIME 和 HTTP 的标头Content-Type
),不会有问题。也就是说,现在似乎有一种非正式的共识,即使用 UTF-8 作为一切的默认编码,原因有很多,这些原因在以下网站上进行了总结:http: //utf8everywhere.org
两种编码都适合您。
在大多数情况下,编码问题来自未使用文件代码中指示的编码保存文件。
这通常在您使用的文字处理器中,有一个选项可以使用您需要的编码保存文件。如果两个选项之间存在差异,则看起来不太好是正常的。
另一个不太常见的问题可能是正在发送指示另一种编码的 HTTP 标头。
简而言之,您必须确保对编码的所有指示都具有相同的信息。
您输入的文本实际上是在
utf-8
其中,并且您将它当作是iso-8859-1
。一个明确的线索是每个重音字符出现 2 个字节。
对于 XML,建议使用
utf-8
. XML 规范要求支持utf-8
(已经utf-16
,但我建议改用它utf-8
)。除了同事评论的内容外,
Chrome
您还可以在显示文档时指定编码:我坚持认为,最好的选择是UTF-8。原因是 UTF-8 允许在同一文档中对Unicode标准的所有字符进行编码,而无需在文档格式(在本例中为 XML)的语法中使用转义序列。
第二个最佳选择是ISO-8859-15。此代码是旧 ISO-8859-1 的更新版本,有一些小的更改。但在这些变化中,有一个非常重要的:
这个例子说明了为什么 UTF-8 是最好的选择。UTF-8 允许您对任何 Unicode 文本进行编码,这是定期添加新字符的主要国际标准。当引入新字符(例如欧元符号)时,使用 UTF-8 的应用程序通常不需要更改。此外,使用 UTF-8,文档可以混合使用多种不同语言编写的文本。使用 UTF-8,您可以简单地编写中文/西班牙语词典,但 ISO-8859-15 和 ISO-8859-1 都不允许这样使用。
要确保文件正确加密,请使用 Notepad++ 或类似的编辑器。有时您可以将数据库保存在 utf8 中,将文本保存在 utf8 中,将声明保存在 utf8 中,并且您的一生都保存在 utf8 中,但如果将文件保存为 iso-8859-1,那就值得了……