我正在建立一个小网站,并希望将其变为国际化。所有内容将以不同语言存储在外部xml中,并通过javascript解析为html。
现在问题是,还有德语变音符号,俄语,中文和日语符号以及从右到左的语言,如阿拉伯语和波斯语。
最好的方法/解决方案是什么?是否有#34;国际编码"哪个可以正确显示所有语言?或者你会建议其他任何解决方案吗?
提前致谢!
答案 0 :(得分:5)
所有Unicode转换(UTF-8,UTF-16,UTF-32)都可以编码所有Unicode字符。根据大小选择要使用的文本:如果大多数文本都在西方脚本中,可能是UTF-8,因为它对大多数字符只使用一个字节,但如果需要则只使用2,3或4个字符。如果您正在编写远东脚本,那么您可能想要进行其他转换之一。
这里的基本要素是它都是Unicode;转换只是表示相同字符的不同方式。
Stack Overflow的联合创始人有一篇关于这个主题的好文章:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
无论您对文档使用何种编码,请注意,如果您正在使用JavaScript处理这些字符串JavaScript strings are UTF-16(除了可以容忍无效值)。 (即使文件是UTF-8或UTF-32。)这意味着,例如,每个表情符号的人都非常兴奋,这些日子看起来像是两个字符"到JavaScript,因为他们用两个单词的UTF-16来表示。比如,例如:
console.log("".length); // 2

因此,您需要注意不要将用UTF-16两个单词编码的两半字符分开。
答案 1 :(得分:2)
多语言网站的常规(和推荐)解决方案是使用UTF-8。这可以处理已经分配了Unicode代码点的任何字符,但需要注意几点:
Unicode是一个版本化标准,不同的Javascript实现可能支持不同的Unicode版本。
如果您的文本包含Unicode基本多语言平面(BMP)之外的字符,则需要以Unicode识别的方式进行文本处理(在Javascript中)。例如,如果您使用Javascript String
类,则需要在进行文本操作时正确考虑代理对。
(Javascript String
实际上编码为UTF-16。它具有允许您将其作为Unicode代码点进行操作的方法,方法/属性(如substring
和length
)使用代码单元而不是代码点索引。如果你不小心,你最终可能会在代理对的低部分和高部分之间分割一个字符串。结果将是无法正确显示的东西。这只会影响更高层面的代码点...但这包括新的表情符号代码点。)