Unicode其实是Latin1的扩展。只有一个低字节的Uncode字符其实就是Latin1字符——附各种字符编码表及转换表
一、概念
1,ASCII
- 标准ASCII码。标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。其中0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。
- 扩展ASCII码。扩展ASCII 字符是从128 到255(0x80-0xff)的字符。许多基于x86的系统都支持使用扩展(或“高”)ASCII。它将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。针对扩展的ASCII码,不同的国家有不同的字符集,所以它并不是国际标准。
2,Latin1
3,UNICODE
4,UTF
- 存储问题。事实证明,对可以用ASCII表示的字符使用UNICODE并不高效,因为Unicode比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处。UTF-8可以解决这个问题,因为它是一种变长字节的编码。比如0-127的Unicode字符(ASCII字符)转为UTF-8只需要一个字节。
- 传输问题。计算机分为大端机和小端机。Unicode用至少两个字节的整数来表示一个字符,这个整数在大端机和小端机上字节顺序是相反的,所以给传输带来了巨大的问题。UTF-8很好的解决了这个问题,因为它是字节顺序无关的,在所有机器上表示都一样(至于为什么一样看一下后面的转换关系就会一目了然)。不过UTF-16和UTF-32也有大小端的问题。这也是为什么UTF-8使用较为普遍的原因。
5,GB2312
《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,1981年5月1日开始实施的一套国家标准,标准号是GB2312—1980。GB就是拼音guobiao的简称。适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。基本集共收入汉字6763个和非汉字图形字符682个。
GB2312采用双字节编码。所有字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。把十六进制的区位码加上0x2020,就得到国标码。国标码加上0x8080,就得到常用的计算机机内码。所以区位码加上0xA0A0就得到了计算机内码。什么是计算机内码呢,通俗的将就是存储字符时在内存里面的整数。下面举个例子。
汉字“啊”是GB2312字符集中的第一个汉字,它的区位码为0x1001。如下图:

- <span style="font-size:14px;">char* p = "啊";
- printf("0x%X%X", unsigned char(p[0]), unsigned char(p[1]));
- </span>
GB2312字符集见附录。
6,GBK
GBK共收录了21003个汉字,完全兼容GB2312字符。比如“啊”在GBK中的编码还是0xB0A1。而且GBK不像B2312那样存在区位码与内码的区分。它的字符编码和在内码是相同的。
7,GB18030
二、转换规则
1,Unicode转UTF
1.1,Unicode转UTF-8

1.2,Unicode转UTF-16
1.3, Unicode转换为UTF-32
2,Unicode转GB18030
三、附录
各种字符编码表及转换表:http://pan.baidu.com/s/1c0laJVq
Unicode其实是Latin1的扩展。只有一个低字节的Uncode字符其实就是Latin1字符——附各种字符编码表及转换表的更多相关文章
- 扩展ASCII码,不同的国家有不同的字符集。Unicode转换为utf8的规则,utf8没有大小端的问题。超过0xFFFF的Unicode字符WINAPI也无能为力(附各种字符编码表及转换表)good
一.概念 1,ASCII ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是 ...
- HTTP请求处理流程 MVC核心(MVC就是扩展了一个HttpModule)
访问Localhost:8080/Home/index.aspx 在调用MVC扩展的UrlRoutingModule的时候 会先检查物理路径文件是否存在 存在的话就不执行MVC中的路由匹配规则 ...
- [转] UniCode编码表
Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含了世界上所有的语言字符,它也就成为了全世界一种通用的编码,而且用十六进制4位表示一个编码,非常简结直观,为大多数开发者所 ...
- UTF-8,Unicode,GBK,希腊字母读法,ASCII码表,HTTP错误码,URL编码表,HTML特殊字符,汉字编码简明对照表
UNICODE,GBK,UTF-8区别 UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那 ...
- 【Unicode编码表】UniCode编码表+转化器
UniCode编码表[转载:https://www.cnblogs.com/csguo/p/7401874.html] Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含 ...
- 由Unicode编码想到弄懂编码表
test unicode好 007400650073007400200075006E00690063006F00640065597D 这是一个Unicode编码,一共六七万的汉字,可以说Unicode ...
- 转:Unicode汉字编码表
转自:http://blog.csdn.net/huangxy10/article/details/10012119 Unicode汉字编码表 1 Unicode编码表 Unicode只有一个字符集 ...
- 【Unicode】字符编码表信息
UTF-8有点类似于Haffman编码,它将Unicode编码为:0x00-0x7F的字符,用单个字节来表示:0x80-0x7FF的字符用两个字节表示:0x800-0xFFFF的字符用3字节表示: ...
- Unicode字符编码表(转)
Unicode字符编码表 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zhenyu5211314/article/details/5153 ...
随机推荐
- java.io.IOException: open failed: ENOENT (No such file or directory)open failed: EISDIR (Is a directory)
这一类的错误,原因一般有两点: 1.没有给相应读写文件权限 2.给了权限,但是文件的路径写的不对,比如少了“/”,这样就会报错了. Caused by: android.system.ErrnoExc ...
- [Linux]Service mysql start出错(mysql: unrecognized service)解决方法
service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误的方法如下: [hitony ~]# service mysql star ...
- [转]Linux下转换字符集(UTF8转换)
今天在Linux 下使用 Iconv 命令转换一个UTF8文件时,总是转换不成功.提示: iconv: 未知 0 处的非法输入序列 后来使用 man iconv 查看,还是没发现异常,因为命令格式都是 ...
- Python即时网络爬虫:API说明
API说明——下载gsExtractor内容提取器 1,接口名称 下载内容提取器 2,接口说明 如果您想编写一个网络爬虫程序,您会发现大部分时间耗费在调测网页内容提取规则上,不讲正则表达式的语法如何怪 ...
- Linux中的读函数与块高速缓存
为了提高Linux块设备读写的效率,Unix会在内存中建立块高速缓存,块高速缓存存储了系统最近读的数据块和刚刚写入的数据块,也就是说IO访问其实是和块高速缓存打交道的(直接IO除外),块高速缓存会适时 ...
- Oracle前10条记录
在Oracle怎样查询表中的top10条记录呢? select * from test where rownum <=10 下面是关于rownum的介绍 ==================== ...
- 一篇memcache基础教程
Memcache是什么Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力.它可以应对任 ...
- 跨域(cross-domain)访问 cookie (读取和设置)
Passport 一方面意味着用一个帐号可以在不同服务里登录,另一方面就是在一个服务里面登录后可以无障碍的漫游到其他服务里面去.坦白说,目前 sohu passport 在这一点实现的很烂(不过俺的工 ...
- Go语言语法汇总
最近看了看GoLang,把Go语言的语法总结了一下,做个快速参考 数据类型 var varName type,var var1,var2… type,var varName type = Value, ...
- URL组成介绍
1.2. HTTP request ----------------- First, let's consider this HTTP request : Line Contents number 1 ...