除了存储字符的方式不同外,utf-32可以显示的任何语言都有任何特殊字符,utf-8不能显示吗?
答案 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代码点。
它是无字节的,所以你可以避免字节顺序问题,这是后方的痛苦。
当然,如果您使用的是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。