计算机中为何不直接使用 UTF-8 编码进行存储而要使用 Unicode 再转换成 UTF-8 ?

在看到计算机编码问题时,文章举例「计算机内存中,统一使用Unicode编码,需要保存或者传输时,转换成UTF8编码。」 我有个疑问为何不直接在计算机里…
关注者
706
被浏览
165,951

40 个回答

因为utf8编码的字符串长度和字符个数没有固定换算关系,导致排版,排序之类的复杂度上升。

Go语言就是内部用utf8存储,但它也提供rune类型来处理字符问题。

其实这个问题是不是:为啥程序内码和外码不能用相同的编码方式?

(这里有几个概念,「字符编码」、「字符集」、「编码方式」等,因为懒窝就不说了,我先妄测题主的「Unicode」是指「Unicode 字符集定长的编码方式」吧。)

笼统来说,内码要求处理效率高,外码要求传输方便。二者不可得兼的时候就会采用不同的编码方式。

utf-8 没有字节序,所以用来作数据传输和存储很方便。

定长的编码在内存中可以快速访问,所以用来作数据处理时效率高。

用 Python 2 处理文本数据时就建议进行内外码转换。