标签:编码 UTF 进制 字符 字符集 Unicode Java 字节
基础
进制
- 二进制:0b开头,例如 0b0000_0001_0000_0000_0000_0000_0000_0000
- 十六进制:0x开头,例如0xA1
- 八进制:0开头,例如070
编码
简介
- ANSI组织创建ANSCII字符集,8位为一个字节,表示常用的128种英文符号
- 国内组织先后创建GB2312/GBK/GB18030字符集用于表示中文,但是与其他编码格式不兼容
- ISO组织创建Unicode字符集与编码规则,用来统一全世界所有字符,但是没有得到推广
- 互联网的兴起,面向数据传输的UTF-8编码规则的出现,使得Unicode编码规则得到广泛使用
- UTF-8编码规则是Unicode字符集的具体实现
- UTF-8采用可变长编码方式,采用1~ 4字节进行编码,其中英文采用1字节编码、中文采用3字节编码。
- 现代编程中,推荐使用UTF-8编码规则
字符集与编码规则
- 字符集:字符与码点一一对应(1:1),负责字符与码点的映射
- 编码规则:码点<-编码规则->字符,就是编码解码的过程,负责编码解码
Ascii
- ASCII是字符集,8位为一个字节,表示常用的128种英文符号(包括字母与符号)
Unicode
- Unicode是字符集,包含全世界所有的字符,全世界所有字符统一占用2个字节
- 支持原有的ASCII字符集位于第2字节处,因此Unicode字符集代表英文会浪费1个字节
- 广义的Unicode是1个标准,它包含Unicode字符集和UTF-8、UTF-8mb4、UTF-16、UTF-32等编码规则
UTF-8
- UTF-8是Unicode的编码规则,网络传输时以8位为1个传输单元,数据存储时以8位为1个存储单元
- 支持1~4个字节存储字符,英文使用1个字节存储,中文使用3个字节存储
- 动态的合适的字节长度编码有利于在网络传输时节省带宽,有利于在数据存储时节省存储空间
- 现代编码过程中推荐使用UTF-8编码
- 注意:UTF-8与MySQL中的utf8不同,前者1到4字节,后者1到3字节,MySQL为了存储表情符号推出了utfmb4(more bytes 4)
UTF-16
- UTF-16是Unicode的编码规则,网络传输时以16位为1个传输单元,数据存储时以16位为1个存储单元
UTF-32
- UTF-32是Unicode的编码规则,网络传输时以32位为1个传输单元,数据存储时以32位为1个存储单元
GB2312
- GB2312是中文编码规则,占用2个字节,是对ASCII字符集的中文扩充。
- 原来127号以下的ASCII字符被保留称之为半角字符,大于127号以后的字符包括大约7000个简体中文字符、中文标点符号称为全角字符
GBK
- GBK是中文编码规则,是对GB2312字符集的扩充。占用2个字节
- GB2312扩展到GBK标准,加入了不常用的中文字符和繁体字
GBK18030
- GBK18030是中文编码规则,是对GBK字符集的扩充。占用2/4个字节,GBK无法表示的汉字使用4字节表示
- GBK扩展到GBK18030标准,加入了少数民族字符
作者声明
- 文章如有问题,欢迎指正!!!
标签:编码,UTF,进制,字符,字符集,Unicode,Java,字节 来源: https://blog.csdn.net/baidu_35805755/article/details/120390006
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。