UTF-8是否适用于读写亚洲语言?

7

我通过web表单(使用UTF-8)接受用户输入,将其保存到MySQL数据库(使用UTF-8字符集),然后生成一个文本文件(编码为UTF-8)。我想知道在使用UTF-8而不是类似UCS-2的编码时是否存在文本损坏的风险?在这种情况下,使用UTF-8是否足够好?

5个回答

14

谢谢提供链接 - 我之前就看过了。我对不同的编码方式(定长字符 vs 变长字符)很熟悉,但出于某种原因,我一直以为UCS-2可以表示更多的字符。看来我错了。 :) - Jon Tackabury
1
UCS-2和UTF-16经常被误解 - 对于某些代码点,它们是等效的,但对于其他代码点,UTF-16引入了代理代码点来处理并不是所有Unicode字符都适合16位的事实。顺便说一句,Windows和Java实际上正在使用UTF-16,而不是UCS-2。 - bdonlan
请注意,UCS-2使用固定长度字符,而UTF-16使用可变长度字符。它们都以16位为单位工作。(还请注意,UCS-2已经过时。) - John Calsbeek
这是绝对适合存储它们的,但如果你正在处理CJK,你可能还想保存你试图保留的字符串的语言。 - Julik

10

如果你正在处理大量的亚洲文本(比拉丁文本更多),你可能需要考虑使用UTF-16编码。UTF-8可以准确地表示Unicode字符集的所有字符,但它更适用于主要是ASCII字符的文本。而UTF-16在整个基本多语言平面范围内能够更有效地压缩。

但是UTF-8已经足够好了——仅仅因为你使用UTF-8而不是UTF-16,并不会导致数据损坏。


2
UTF-8可以表示任何Unicode字符。因此,您在使用UTF-8时不应该遇到任何问题。
实际上,UTF-8甚至可以表示一些UCS-2不能表示的字符(UCS-2只能表示U+0000到U+FFFF;UTF-8、UTF-16和UCS-4处理所有的Unicode代码点)。

1
据我所知,UTF-8旨在涵盖所有早期的Unicode变体,因此使用它覆盖UCS-2应该是可以的。请参见http://www.unicode.org/versions/Unicode5.1.0/,并查看侧边栏中的第5.0章节;第9-12部分应该是您需要的内容。

0

它与天城体一起工作得非常出色。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接