`
songbin0201
  • 浏览: 319900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于2进制和16进制、以及字符编码的回顾(先挖坑,后填埋)

阅读更多
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
http://www.joelonsoftware.com/articles/Unicode.html
http://blog.csdn.net/sfdev/article/details/3770706 (推荐)

2进制  逢2进1
16进制 逢16进1

1、ASCII
美国信息交换标准代码 American Standard Code for Information Interchange
用指定的7位或8位二进制数组合来表示128或256种可能的字符。
例如 a ,97就是其对应的ascii编码
ascii 是 二进制表示的字符编码集合

2、unicode
Universal Multiple-Octet Coded Character Set,简称为UCS
unicode 是用16进制表示的字符编码集合,例如“密” 的 unicode的编码是 5bc6

unicode表示一种字符集合,但是不同字符占用的位数不同,有的可能占用1个字节就够了,例如  'a' ,而有的可能占用2个以上字节,例如 “啊” ;这就带来了存储格式的问题,统一采用最长字节存储,不足的补0,则会带来空间上的浪费,基于这种情况,演变出 UTF-8、UTF-16、UTF-32等等unicode的实现方式(即编码方式)
UTF(UCS Transformation Format)

UTF-16 用两个字节表示一个符号,基本等同于UCS-2。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

Unicode符号范围            |  UTF-8编码方式
(十六进制)                      | (二进制)
--------------------+---------------------------------------------
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



http协议的编码设置
请求头Accept-Charset 是告诉服务器,浏览器可以接受的字符集,如果服务器不支持该字符集,应该返回406的error
响应头Content-Type 中的 charset则将告诉浏览器
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics