使用多种语言呈现XML文档

时间:2010-04-08 11:00:24

标签: xml internationalization xslt

我有一个XML页面,其中包含各种语言的元素 - 阿拉伯语,英语,中文,日语..我应该选择哪种编码格式?如果我尝试使用XSL(使用utf-8或ISO-8859-6或ISO-2022-JP)呈现XML,我会收到此错误:

  

在文字中找到了无效字符   内容。

如何解决或解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:2)

UTF-8是唯一可以处理所有这些字母的编码。它也是XML的默认编码,也是唯一对现代应用程序有意义的编码。 (无论如何,对于存储/线上;对于内部处理,您的语言的字符串类型更可能是UTF-16或32。)

从错误中可能看出输入文件中存在问题,而不是您选择输出编码的问题。也许它是用UTF-8以外的其他东西编码的,但是忘了包含<?xml encoding?>声明。或者可能是ISO-2202-JP无效的转义序列? (这是编码的恐怖。)

您应该尝试将输入文件加载到解析XML的内容(例如Firefox或IE)中,并查看它出现的错误(如果有的话)。

(你不能在一个XML文件中混合编码。如果你把不同来源的字节字符串吐出到XML中,你就已经丢失了。这个XML是如何生成的?)

答案 1 :(得分:1)

发现错误到底在哪里?听起来XML本身可能具有无效字符(例如,除了\ r,\ t和\ n IIRC之外的U + 0000和U + 001F之间的控制字符)。在将XML加载到任何体面的XML编辑器(或以编程方式)时,您可能会看到这一点。

除此之外,UTF-8通常是一种很好的编码选择 - 对于远东角色而言,它的效率低于UTF-16,请注意。 UTF-16和UTF-8都允许表示所有Unicode字符(对于基本多语言平面之外的字符,使用UTF-16中的代理对)。

答案 2 :(得分:0)

UTF-8涵盖了所有UCS2(这是大多数人在说Unicode时所指的)字符,因此应该是合适的。您仍然必须确保没有任何嵌入字符不应出现在XML中,例如<>或不可打印的字符