紫影基地

 找回密码
 立即注册
查看: 152|回复: 0

常见中文字符编码介绍

[复制链接]
阅读字号:

2001

主题

2116

帖子

21万

积分

超级版主

Rank: 8Rank: 8

积分
210086
发表于 2024-4-21 17:15:27 | 显示全部楼层 |阅读模式

        今天在github上下载数据时,遇到了一个中文字符编码的问题,尝试了常见的中文字符编码始终不正确,最终在查看了大量博客后找到比较需要的中文字符编码,为了便于以后大家查找使用,现在我将中文字符编码汇总如下。

        中文字符编码是指将汉字、符号等中文字符转换为计算机可以识别和处理的二进制编码的过程。中文字符编码涉及到多种编码方式,每种编码方式有其特定的编码规则和使用场景。本文将介绍常见的中文字符编码方式,并提供实际应用例子,以帮助读者更好地理解和应用中文字符编码。

一、GB2312

        GB2312是中国最早的汉字编码标准之一,它包含了基本的汉字、符号、数字等共收录了7445个字符。GB2312编码采用两个字节表示一个中文字符,其中第一个字节的高位为0xA10xF7,低位为0xA10xFE;第二个字节的高位为0xA10xFE,低位为0xA10xFE。GB2312编码主要用于简体中文字符的处理和表示,广泛应用于计算机系统、通信设备等领域。

        例子: GB2312编码中的汉字“中”,对应的十六进制编码为0xD6D0。在应用程序中,可以使用GB2312编码对文本进行编码和解码,例如:



二、GBK

        GBK是GB2312的扩展版本,它包含了更多的汉字、符号、数字等,共收录了21886个字符。GBK编码采用双字节表示一个中文字符,其中第一个字节和GB2312编码一致,第二个字节的高位为0xA10xFE,低位为0xA10xFE。GBK编码可以表示繁体中文和日文汉字等其他字符,因此在大陆地区和香港地区都有广泛的应用。

        例子: GBK编码中的汉字“国”,对应的十六进制编码为0xB9xFA。在应用程序中,可以使用GBK编码对文本进行编码和解码,例如:



三、GB18030

        GB18030是中国国家标准局于2000年发布的新一代中文编码标准,它包含了GB2312和GBK编码中的所有字符,以及繁体中文、日文汉字、朝鲜语等字符,共收录了27484个字符。GB18030编码采用一至四个字节表示一个字符,其中一个字节可以表示ASCII字符,两个字节可以表示GB2312和GBK字符,三至四个字节可以表示GB18030中新增的字符。

        例子: GB18030编码中的汉字“编码”,对应的十六进制编码为0xC1xBB,B1xE4,B3xC9。在应用程序中,可以使用GB18030编码对文本进行编码和解码,例如:



四、UTF-8

        UTF-8是一种可变长度的Unicode编码方式,可以表示Unicode字符集中的任意字符,包括中文字符。UTF-8采用1至4个字节表示一个字符,其中ASCII字符采用一个字节表示,汉字采用三个字节表示。UTF-8编码不仅可以用于中文字符的处理和表示,还可以表示其他语言的字符,因此在国际化应用中得到了广泛的应用。

        例子: UTF-8编码中的汉字“编码”,对应的十六进制编码为0xE7xBCx96,E7xA0x81,E7xA0x81。在应用程序中,可以使用UTF-8编码对文本进行编码和解码,例如:





五、Big5

        Big5是一种汉字编码方式,主要用于繁体中文的处理和表示,是台湾地区广泛使用的汉字编码方式之一。Big5编码采用两个字节表示一个中文字符,其中第一个字节的范围为0x810xFE,第二个字节的范围为0x400x7E和0xA1~0xFE。Big5编码中包含了13060个中文字符和1896个图形符号和拼音,是繁体中文处理的重要编码方式之一。

        例子: Big5编码中的汉字“中”,对应的十六进制编码为0xA4x40。在应用程序中,可以使用Big5编码对文本进行编码和解码,例如:



六、ASCII编码

        ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种使用7位二进制数字来表示字符的编码方式,由美国标准协会制定,最初主要用于英文和拉丁字母的编码。由于ASCII编码只有7位,共能够表示128个字符,因此无法表示中文等较多的字符。但是,在早期的计算机应用中,为了表示中文等字符,人们采用了一种称为ASCII中文字符编码的方式。

        ASCII中文字符编码将中文字符表示成两个ASCII码,一个表示高字节(高8位),一个表示低字节(低8位)。其中,高字节码取值范围为A1HF7H,低字节码取值范围为40HFEH。这种编码方式虽然简单,但由于无法表示所有的中文字符,而且不具备跨平台性和通用性,因此已经逐渐被其他编码方式所取代,例如GB2312、GBK、UTF-8等。

        例子: 在早期的计算机应用中,人们采用ASCII中文字符编码来表示中文字符,例如:



七、ANSI

        ANSI(American National Standards Institute,美国国家标准化组织)是一个负责制定和发布标准的组织,ANSI中文字符编码也称为Windows默认的本地代码页(Code Page)。ANSI中文字符编码是基于ASCII码的扩展,将ASCII码表中未使用的8位二进制编码表示为其他字符、符号和非拉丁字母字符。ANSI中文字符编码是一种单字节编码方式,每个字符占用一个字节,最多能够表示256个字符。在早期的Windows操作系统中,ANSI中文字符编码被广泛应用于中文字符的编码。

        不同的语言和地区可以有不同的ANSI中文字符编码,例如中文Windows系统的默认ANSI编码为CP936(也称为GBK),而英文Windows系统的默认ANSI编码为CP1252。CP936编码支持了GB2312字符集中的中文字符和一些扩展字符,而CP1252编码主要用于欧洲语言和拉丁字母。

        例子: 在早期的Windows应用程序中,ANSI中文字符编码被广泛使用。例如,在Python 2.x版本中,可以使用CP936编码来表示中文字符:





八、LATIN1

        Latin1(也称为ISO 8859-1)是一种单字节编码,它被广泛应用于欧洲语言的字符编码。Latin1字符集包含了西欧和北欧语言所需的字符,例如英文字母、西班牙语、葡萄牙语、德语、法语等拉丁字母语言的字母、标点符号、数字等。Latin1字符集总共包含了256个字符,每个字符占用一个字节。

        虽然Latin1编码不是为中文设计的编码方式,但是它的编码范围可以覆盖部分中文字符,例如中文标点符号、部分汉字等。不过,对于大部分中文字符而言,Latin1编码无法正确表示,因此在实际中文应用中,不应使用Latin1编码方式。

        例子: 在Python中,可以使用Latin1编码方式来编码一些中文标点符号,例如中文句号(“。”):



九、Unicode

        Unicode是一种全球性的字符编码标准,旨在为各种语言、文字和符号提供唯一的标识。它的目标是将世界上所有语言的字符映射为数字,以实现文本的可靠存储、处理和交换。

        Unicode中文字符编码可以用多种方式实现,其中包括UTF-8、UTF-16等编码方式。Unicode编码支持所有的中文字符,包括简体中文、繁体中文和一些方言文字等。Unicode编码字符集非常庞大,包含了超过130,000个字符,其中包括了GB2312、GBK、GB18030等中文字符编码方式所能表示的中文字符集。

        中文字符编码是中文计算机处理和表示的重要问题,涉及到多种编码方式和具体应用场景。在实际应用中,需要根据具体情况选择适合的编码方式进行处理和表示,以确保数据的正确性和完整性。
————————————————

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-12 07:01 , Processed in 0.081210 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表