常见的字符编码有哪些?有什么区别?
✅常见的字符编码有哪些有什么区别典型回答就像电报只能发出滴和答声一样计算机只认识 0 和 1。人类的文字多种多样如何把人类的文字转换成计算机认识的 01 字符呢这个过程需要通过字符编码。字符编码Character encoding是一套法则使用该法则能够对自然语言的字符的一个集合如字母表或音节表与另一套东西如号码或电脉冲进行配对。和摩尔斯电码功能类似上个世纪 60 年代美国制定了一套字符编码对英语字符与二进制位之间的关系做了统一规定这被称为 ASCII 码一直沿用至今。由于 ASCII 只有 128 个字符虽然可以表示英文字符但世界上还有很多其他文字无法表示所以需要一种更加全面的字符编码。于是又出现了Unicode 字符集常见的 Unicode Transformation Format 有UTF-8、UTF-16 以及 UTF-32 等除此之外还有一些常用的中文编码GBK、GB2312、GB18030等。扩展知识Unicode 和 UTF-8 有什么关系Unicode中文万国码、国际码、统一码、单一码是计算机科学领域里的一项业界标准。它对世界上大部分文字系统进行了整理、编码使得计算机可以用更为简单的方式来呈现和处理文字。Unicode 备受认可并广泛地应用于计算机软件的国际化与本地化过程。很多新技术如可扩展置标语言XML、Java 编程语言以及现代的操作系统都采用 Unicode 编码。Unicode 是一套通用的字符集包含世界上的大部分文字也就是说Unicode 是可以表示中文的。但是Unicode 虽然统一了全世界字符的编码但没有规定如何存储。如果 Unicode 统一规定每个符号用三个或四个字节表示那么每个英文字母前必然有多个字节是 0英文字母在 ASCII 中已有一个字节的表示。这样文本文件的大小会因此大出两三倍对于存储来说是极大的浪费。为了解决存储效率问题就出现了一些中间格式的字符集它们被称为通用转换格式即 UTFUnicode Transformation Format。常见的 UTF 格式有UTF-8、UTF-16 以及 UTF-32。UTF-8 使用一至四个字节为每个字符编码UTF-16 使用二或四个字节为每个字符编码UTF-32 使用四个字节为每个字符编码所以我们可以说UTF-8、UTF-16 等都是 Unicode 的一种实现方式。有了 UTF-8为什么还要有 GBKUTF-8 是 Unicode 的一种实现包含了世界上的所有文字采用 1~4 字节变长编码。对于那些优先纳入的文字可以使用 1 字节或 2 字节存储对于后来纳入的文字则需要 3 字节或 4 字节存储。正是由于 UTF-8 太全面了那些纳入较晚的字符在 UTF-8 中占用的字节数可能更多存储空间要求更大。对于常用的汉字在 UTF-8 中采用 3 字节编码而如果有一种只包含中文和 ASCII 的编码就只需要 2 个字节。大多数网站只服务一个国家或地区。例如一个中国网站通常只出现简体字、繁体字以及一些英文字符很少出现日文或韩文。出于这样的考虑中国国家标准总局于 1981 年制定并实施了 GB 2312-80 编码即中华人民共和国国家标准简体中文字符集。后来微软利用 GB 2312-80 未使用的编码空间收录 GB 13000.1-93 全部字符制定了 GBK 编码。注从时间线来看GB 23121981 年早于 UTF-81993 年出现因此 GB 系列编码最初并非为替代 UTF-8 而诞生而是独立发展的国家标准。这里的问题有了 UTF-8 为什么还要 GBK更适合理解为既然 Unicode 体系已经覆盖全球文字为什么在实际系统中仍存在 GBK 编码——主要原因在于 GBK 对中文的存储效率更高且存量系统兼容性有历史惯性。有了标准中文字符集纯中文网站可以采用这种编码方式从而节省存储空间。常用的中文编码有 GBK、GB2312、GB18030 等最常用的是 GBK。GB23121980/1981 年16 位字符集收录 6763 个简体汉字、682 个符号共 7445 个字符。优点适用于简体中文环境属于中国国家标准通行于大陆、新加坡等地。缺点不兼容繁体中文汉字集合过少。GBK1995 年16 位字符集收录 21003 个汉字、883 个符号共 21886 个字符。优点适用于简繁中文共存的环境为简体 Windows 所使用向下完全兼容 GB2312向上支持 ISO-10646 国际标准所有字符可一对一映射到 Unicode 2.0。缺点不属于国家标准而是 Microsoft 对 GB2312 的扩展与 Big5 之间需要转换很多搜索引擎不能很好地支持 GBK 汉字。GB180302000 年32 位字符集收录 27484 个汉字同时收录藏文、蒙文、维吾尔文等主要少数民族文字。优点可收录几乎所有文字和符号是中国最新的国家标准。缺点目前支持它的软件较少。为什么会出现乱码文件中的内容归根到底都是由 0101 组成的至于 0101 的二进制码如何转成人们可以理解的字符串则需要通过规定好的字符编码标准进行转换。如果把一串中文字符通过 UTF-8 编码传输给别人别人拿到之后通过 GBK 进行解码得到的内容就会是锟斤拷锟斤拷…之类的乱码。