首页 > 一门语言在实现 String 和 Binary 两种类型时, 他们的数据结构差异性在哪里?

一门语言在实现 String 和 Binary 两种类型时, 他们的数据结构差异性在哪里?

string 是我们非常常用的基础数据类型,binary 也是时长用到。它们的差异性有时候让人有点摸不着头脑


字符串在软件内部的表示取决于内部实现。比如 Windows NT、Java 内部使用 UTF-16LE 编码保存字符串,C(wchar*)使用两字节或者四字节编码,Python 2 (unicode 类型)至 3.2 依编译时选项使用两字节或者四字节编码,Python 3.3 以后依字符串内容使用单字节、两字节或者四字节编码,Go 和 Rust 使用 UTF-8 编码。MySQL 有两种字符串编码:「utf8」使用三字节编码,「utf8mb」使用四字节编码。

字符串并不能直接「作为」二进制保存;你(或者你所使用的软件)必须将其进行编码。上边我已经讨论了内部在内存中的编码表示。如果要存储到文件,或者通过网络传输,需要使用者(做这件事的人)指定编码,或者采用默认编码的。

ASCII、Latin-x、UTF-8 编码是字节序无关的(前两类是单字节编码)。GB18030 和 UTF-16、UTF-32 是字节序相关的。

【热门文章】
【热门文章】