我正致力于将我的一个工作计划国际化。我正在尝试使用远见以避免可能的问题或重做过程。
我看到了UTF-8,UTF-16和UTF-32的参考文献。我的问题分为两部分:
如果UTF-8适用于所有内容,那么我很好奇UTF-16和UTF-32的优点是什么(例如数据库中的特殊搜索功能等)理解应该帮助我完成我的程序设计(和数据库连接)正确。谢谢!
答案 0 :(得分:13)
这三种方式只是表达同一事物的不同方式,因此没有一种语言支持,而不是另一种语言。
有时,UTF-16由需要与之互操作的系统使用 - 例如,Windows API本身使用UTF-16。
理论上,UTF-32可以表示单个32位整数中的任何“字符”,而不需要使用多个,而UTF-8和UTF-16需要使用多个8位或16位-bit整数来做到这一点。但实际上,对于某些代码点的组合和非组合变体,这并不是真的。
UTF-8优于其他优点的一个优点是,如果你有一个错误,你假设8位,16位或32位整数的数量分别与代码点的数量相同,那么它就变成了使用UTF-8显然更快 - 一旦你有任何非ASCII码点,某些东西就会失败,而使用UTF-16时,这个错误就会被忽视。
要回答您的第一个问题,这里是Unicode目前不支持的脚本列表:http://www.unicode.org/standard/unsupported.html
答案 1 :(得分:9)
UTF8可变1到4个字节,UTF16 2或4个字节,UTF32固定为4个字节。
这就是为什么UTF-8有一个优势,其中ASCII是最普遍的字符,UTF-16在ASCII不占优势的地方更好,UTF-32将覆盖4字节的所有可能字符。