XML中的UTF-8或ISO-8859-1是什么意思?

6
我们有一个应用程序,它接收用户在Web表单中输入的文本字符串并将其打包成XML格式。为了使事情更加混乱,XML作为Outlook电子邮件消息的正文发送。
由于用户可以将几乎任何东西粘贴到Web表单中(通常来自Word),因此文本字符串可能包含非ASCII(7位)字符,例如用于开启和关闭双引号的字符。
该字符串通过电子邮件完整地传输,但当我们使用Microsoft XML解析器时,它会抱怨(完全正确)XML包含无效字符。
一个快速的解决方法是在头部中放置encoding="iso-8859-1"。但是,我想知道是否最好在开始时以真正的UTF-8格式对XML文件进行编码,因为我读过一些文章,这些文章指出,如果每个XML文档都以UTF-8编码,那么世界将更加和谐?
但是...由于XML文档实际上是通过电子邮件消息的正文传输的,我们会遇到麻烦吗?我了解到UTF-8是一种可变字节长度编码系统,我假设使用7位ASCII和转义字符来表示“还有更多数据”。
另一个选择是设置为UTF-8,但使用&#nnn;格式替换非ASCII字符。
对于这个相当复杂的领域,任何建议都将不胜感激。
谢谢,Rob。

实际上使用 &# 的想法并不好 - 虽然文档可以正确打开,但在 IE 中无法正确显示。开/闭引号会显示为一个块。 - Rob Nicholson
“块”表示正在使用的字体没有可用于显示字符的字形。 - andynormancx
ISO 8859-1没有那些“智能”引号。因此,会发生的情况是,表示这些智能引号的字节最终会变成其他随机的ISO-8859-1字符,例如ôñquoted textÝâ。UTF-8是安全的。 - MSalters
2个回答

9

我来自一个只使用英语的地方之外{1},我可以确认UTF-8在任何地方都可以正常工作,并且已经这样工作了很多年。我记不清楚有多久没有MTA通过剥离第8位(导致“发明”QP等)来破坏电子邮件的问题了。尽管在90年代中期肯定发生过这种情况,但UTF-8很快就变得流行起来并取代了iso-8859-1。我不记得我什么时候转换,但我想至少在2000年之前。

说到iso-8859-1,它将无法覆盖用户所有可能的输入。根据语言,可能需要其他iso-8859变体(例如芬兰语和威尔士语),即使如此,8859系列也不支持中文等语言。另一方面,UTF-8应该涵盖所有内容,因此我强烈建议使用UTF-8而不是iso-8859-1。

{1} 由于任何不完全支持UTF-8的程序都会被认为是垃圾并且不太可能在这里使用,因此这可能会影响我的经验。


7
我建议尽可能使用UTF-8编码,因为它比ISO-8859-1更加灵活,可以涵盖更多的字符集。如果你在ISO-8859-1中输入类似Jiři这样的东欧字符,它将无法正常显示。所以,如果你真的想尝试改变编码(我赞成!),那么我建议使用UTF-8,并只在无法使用UTF-8时才退回到ISO-8859-1。
MArc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接