我应该在我的多语言cms中使用utf-8或utf-16或utf-32吗?

时间:2011-11-17 08:45:00

标签: utf

除了存储字符的方式不同外,utf-32可以显示的任何语言都有任何特殊字符,utf-8不能显示吗?

4 个答案:

答案 0 :(得分:2)

所有UTF编码都可以代表same range of code points(0到0x10FFFF)。因此,相同的字符可以由任何字符编码。

它们是否可以“显示”是一个完全不同的问题。这与编码无关,也与使用的字体系列功能无关。我不确定任何字体都有每个Unicode代码点的字形。但我认为你的意思是“代表”。

它们确实代表给定字符串需要多少字节。 UTF-8几乎总是非亚洲语言的最短。对于那些,UTF-16可能会赢(我没有真正“基准”。)我无法想象UTF-32最佳的现实案例。

答案 1 :(得分:1)

是否有任何一个角色无法代表?

理论上:不。

所有这些格式都可以代表所有Unicode代码点。

在实践中:取决于。

Windows API使用UCS-2(几乎是第一个UTF-16块),并不总是正确处理代理。因此,与其他程序相比,您可能希望使用UTF-16使程序尽可能“正常”,而不是手动截断高范围的UTF-32代码点。

还有别的吗?

是:使用UTF-8!

它是无字节的,所以你可以避免字节顺序问题,这是后方的痛苦。
当然,如果您使用的是Windows,那么在使用它们之前需要转换为UTF-16。

答案 2 :(得分:0)

UTF-8,UTF-16和UTF-32都可用于表示所有Unicode数据点。所以不,没有特殊字符可以用UTF-32表示而不是用UTF-8表示。

答案 3 :(得分:0)

1)对于普通英文字符,UTF-8可以向后兼容ASCII,当您的客户只有英文字符时,这可能是一个优势。

2)如果你的ASCII字符多于非英文字符,UTF-8可以很好地节省网络带宽。

3)如果在节省存储空间方面有更多的非英文字符,UTF-16会很好。

我建议使用基于上面#1的UTF-8。