2010-03-13 71 views
6

我只是想在Django项目中开发一个翻译应用程序,它使具有特定权限的注册用户可以翻译它出现在最新版本中的每条消息。对于所有常用语言,UTF-8足够了吗?

我的问题是,我应该使用这个翻译应用程序中的数据库表的字符集?看起来像一些欧洲语言字符不能存储在UTF-8中?

+1

UTF-8是Unicode的编码方案。所有的Unicode字符都可以用UTF-8编写。 “它能够代表Unicode标准中的任何字符”http://en.wikipedia.org/wiki/UTF-8。你在问什么?如果UTF-8编码所有Unicode字符? – 2010-03-13 15:38:22

+0

我很好奇......那是什么欧洲语言的人物? – hop 2010-03-13 16:06:39

回答

24

看起来像一些欧洲语言字符不能存储在UTF-8中?

不正确。 UTF-8可以存储任意字符集,没有任何限制,除了克林贡。 UTF-8是您的国际化一站式商店。如果字符有问题,它们很可能是编码问题,或者缺少对用于显示数据的字体的字符范围的支持(尽管对于欧洲语言字符极不可能,但在查看时常见另请参阅this question

如果非西方字符集无法呈现,则可能是因为用户的内置字体没有涵盖该范围的UTF-8。

更新:克林贡这的确不是official UTF-8部分:

尚未被列入统一(例如,Tengwar)或Unicode中,由于不符合纳入一些现代的发明脚本缺少真实世界的使用(例如克林贡)在ConScript Unicode注册表中列出,以及非官方的但广泛使用的私用区域代码分配。

但是,有一个volunteer project已私下分配给克林贡的代码点F8D0-F8FF。 Gallery of Klingon characters

+0

如果有人为Klingon字母表写了一个包含Unicode代码点的附录,这也可以用UTF-8表示。或者你可以使用一个私人使用区域并制作映射到这些代码点的字体。 – 2010-03-13 15:39:58

+2

@Williham已完成:Klingon(F8D0-F8FF)http://en.wikipedia.org/wiki/ConScript_Unicode_Registry – 2010-03-13 15:40:32

2

UTF-8可以用来表示所有的Unicode,所以它不会让你表达所有的通用语言。它允许你表示全部语言。

如果看起来好像一些欧洲字符不起作用,那是一个编码问题。