2009-08-11 43 views
5

我们有一个应用程序,它将用户输入的文本字符串输入到Web表单中并将其打包为XML。只是为了混淆事情,XML是作为Outlook电子邮件消息的主体发送的。XML中的UTF-8或ISO-8859-1

因为用户几乎可以将任何东西粘贴到Web表单中(通常是Word),所以文本字符串可以包含非ASCII(7位)字符,例如用于打开和关闭双引号的字符。

该字符串通过电子邮件传播,但当我们使用Microsoft XML解析器时,它抱怨(非常正确)XML包含无效字符。

快速解决方法是在编码头中加入encoding =“iso-8859-1”。但是,我不知道在开始时以真正的UTF-8格式编码XML文件是否会更好,因为我已经阅读过文章,指出如果每个XML文档都以UTF-8编码?

但是...我们是否会遇到麻烦,因为XML文档实际上是通过电子邮件正文传输的?据我所知,UTF-8是一个可变字节长度编码系统,我假定它使用7位ASCII码和escapte字符来表示“有更多数据”。

另一个选项是设置为UTF-8,但用非ASCII字符替换为& #nnn;格式。

任何建议在这个相当复杂的领域表示赞赏。

干杯,罗布。

+0

实际上,使用&#的想法并不是很好 - 当文档打开正确时,它在IE中无法正确显示。打开/关闭引号显示为一个块。 – 2009-08-11 10:00:44

+0

“块”表示正在使用的字体没有可用于显示字符的字形。 – andynormancx 2009-08-11 10:02:27

+0

ISO 8859-1没有这些“智能”引号。所以会发生的是,表示这些智能引号的字节最终会随机成为其他ISO-8859-1字符,例如,引用文字“。 UTF-8是安全的。 – MSalters 2009-08-11 11:41:08

回答

6

我可能会尝试尽可能使用UTF-8 - 它只是覆盖更多的地面,并且比ISO-8859-1更灵活,它会阻塞例如,东欧人物已经(尝试写出Jiři或类似于ISO-8859-1的东西 - 它会惨败)。所以如果你真的想试图改变(我鼓掌!),那么我会去UTF-8,如果你真的不能使UTF-8工作,只会诉诸ISO-8859-1。

马克

7

这里从外面仅限英语土地{1}我可以证实,UTF-8正常工作无处不在,已经持续了很多年。我无法记住,因为任何MTA通过剥离第8位(导致“发明”如QP(其基本上解决了症状而不是解决问题))来破坏电子邮件。 90年代中期发生的情况最为明显,尽管UTF-8迅速普及并取代了iso-8859-1。我不记得我什么时候换了,但我猜它至少在2000年以前。

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

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