UTF-8不支持哪些语言?

时间:2013-03-27 16:16:55

标签: utf-8 internationalization c++builder utf-16 utf

我正致力于将我的一个工作计划国际化。我正在尝试使用远见以避免可能的问题或重做过程。

我看到了UTF-8,UTF-16和UTF-32的参考文献。我的问题分为两部分:

  1. UTF-8 支持哪些语言?
  2. UTF-16和UTF-32比UTF-8有什么优势?
  3. 如果UTF-8适用于所有内容,那么我很好奇UTF-16和UTF-32的优点是什么(例如数据库中的特殊搜索功能等)理解应该帮助我完成我的程序设计(和数据库连接)正确。谢谢!

2 个答案:

答案 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字节的所有可能字符。