字符编码基础知识

A.概念

  1. **字节:**计算机内部用二进制字符串表示信息,每一个二进制位bit有两种状态,因此一个字节byte=8个二进制位,可以组合出2^8=256种状态。
  2. **ASCII码:**美国制定了一套规范英文字符和二进制位对应关系的规定——ASCII码,特点是第一位规定为0,只占用一个字节中的后7位,即一共规定了2^7128个字符的编码。
  3. **非ASCII码:**其他国家规定的,用来表达除英文字符外的国家语言符号,由于没有统一规范,所以不同国家的编码方式,128-255这一段表达的符号是不一样的。
  4. Unicode:——统一码,一种所有符号的编码:Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
  5. UTF-8: 互联网上使用最广的一种unicode实现方式。

UTF-8的编码规则
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。


下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
UTF字节数 (十六进制) | (二进制)
——————–+———————————————
一个字节 0000 0000-0000 007F | 0xxxxxxx
两个字节 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
三个字节 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
四个字节 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
eg: “严”,unicode是4E25(100111000100101),根据上表,发现4E25处在第三行的范围内,因此“严”的UTF-8编码需要三个字节,即格式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,从“严”的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,“严”的UTF-8编码是“11100100 10111000 10100101”,转换成十六进制就是E4B8A5。

Java中字符编码处理的标准函数:
*注:字符串在java内存中以unicode编码存储*
getBytes(charset):将字符串所表示的支付按照charset编码,并以字节数组方式表示。
new String(charset):将字节数组按照charest编码进行组合识别,最后转换为unicode存储。
setCharacterEncoding(charset):设置http请求或相应的编码(如果request不指定默认使用iso8859-1编码)

原文章链接:
https://blog.csdn.net/zougen/article/details/80272889

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 缩略词 正文之前 1. 目的 2. 本文内容 3. 声明 1. 字符编码相关的背景知识 1.1. 拉丁字母 1.1.1. 我们的目标 1.2. 什么是字符编码 2. 字符编码标准 2.1. 只支持基本的拉丁字符字符编码:ASCII 2.1.1. ASCII的由来 2.1.2. ASCII编码规则 2.1.2.1. ASCII字符集中的功能/控制字符 2.1.2.1.1. 什么是Function Code功能码或 Function Character功能字符 2.1.2.1.2. ASCII中的Function/Control Code功能字符的详细含义 2.1.2.1.2.1. 0 – NUL – NULl 字符/空字符 2.1.2.1.2.2. 1 – SOH – Start Of Heading 标题开始 2.1.2.1.2.3. 2 – STX,3 – ETX 2.1.2.1.2.4. 4 – EOT – End Of Transmission 传输结束 2.1.2.1.2.5. 5 – ENQ – ENQuiry 请求 2.1.2.1.2.6. 6 – ACK – ACKnowledgment 回应/响应 2.1.2.1.2.7. 7 – BEL – [audible] BELl 2.1.2.1.2.8. 8 – BS – BackSpace 退格键 2.1.2.1.2.9. 9 – HT – Horizontal Tab 水平制表符 2.1.2.1.2.10. 10 – LF – Line Feed 换行 2.1.2.1.2.11. 11 – VT – Vertical Tab 垂直制表符 2.1.2.1.2.12. 12 – FF – Form Feed 换页 2.1.2.1.2.13. 13 – CR – Carriage return 机器的滑动部分/底座 返回 -> 回车 2.1.2.1.2.14. 14 – SO,15 – SI 2.1.2.1.2.15. 16 – DLE – Data Link Escape 数据链路转义 2.1.2.1.2.16. 17 – DC1 – Device Control 1 / XON – Transmission on 2.1.2.1.2.17. 18 – DC2 – Device Control 2 2.1.2.1.2.18. 19 – DC3 – Device Control 3 / XOFF – Transmission off 传输中断 2.1.2.1.2.19. 20 – DC4 – Device Control 4 2.1.2.1.2.20. 21 – NAK – Negative AcKnowledgment 负面响应-> 无响应, 非正常响应 2.1.2.1.2.21. 22 – SYN – SYNchronous idle 2.1.2.1.2.22. 23 – ETB – End of Transmission Block 块传输中止 2.1.2.1.2.23. 24 – CAN – CANcel 取消 2.1.2.1.2.24. 25 – EM – End of Medium 已到介质末端,介质存储已满 2.1.2.1.2.25. 26 – SUB – SUBstitute character替补/替换 2.1.2.1.2.26. 27 – ESC – ESCape 逃离/取消 2.1.2.1.2.27. 28 – FS – File Separator 文件分隔符 2.1.2.1.2.28. 29 – GS – Group Separator分组符 2.1.2.1.2.29. 30 – RS – Record Separator记录分隔符 2.1.2.1.2.30. 31 – US – Unit Separator 单元分隔符 2.1.2.1.2.31. 32 – SP – White SPace 空格键 2.1.2.1.2.32. 127 – DEL – DELete 删除 2.1.2.1.3. 各种字符的标准的读法/叫法 2.1.3. ISO 646 2.2. 支持多种衍生拉丁字母的字符编码:EASCII和ISO 8859 2.2.1. EASCII 2.2.2. ISO 8859 2.2.2.1. ISO/IEC 8859出现的背景 2.2.2.2. ISO/IEC 8859的编码规则 2.2.2.3. ISO/IEC 8859的特点 2.2.2.4. ISO/IEC 6429 2.2.2.5. ISO 8859和ISO-8859的区别和联系 2.2.2.5.1. 原先的ISO 8859-1和我们常说的ISO 8859-1 2.3.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值