Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2
一、Unicode、UCS、GBK
5、一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号 的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。那么UCS-2和UCS-4是什么意思?UCS-2是指用两个字节对应一个字符的编码字符集;UCS-4则是指用四个字节对应一个字符的编码字符集。你可以认为,目前为止Unicode有两个具体的编码字符集,UCS-2和UCS-4。
7、unicode在很长一段时间内无法推广,直到互联网的出现,为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码
编码字符集(Coded character set):是一组字符对应的编码(即数字),为字符集合中的每一个字符给予一个数字。例如最早的编码字符集ASCII,和后来的unicode(持续更新中)。由于编码字符集为每一个字符赋予一个数字,因此,字符可以认为就是一个16位的数字,因此以下方式都可以给字符赋值:
char c=‘中’
char c =0x4e2d
char c=20013
字符编码方案(Character-encoding schema):将字符编码(数字)映射到一个字节数组的方案,因为在磁盘里,所有信息都是以字节的方式存储的。因此16位字符必须转换为一个字节数组才能够存储。例如UTF-8字符编码方案,它可以将一个字符转换为1、2、3或者4个字节。
一般认为,编码字符集和字符编码方案合起来被称之为字符集(Charset),这是一个术语,要和前面的字符集合(Character set)区分开。
二、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
三、Little-Endian、Big-Endian
Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
Big Endian和Little Endian和芯片类型以及操作系统都有关系。
四、举例
推荐这篇文章看一下:http://wiki.ubuntu.org.cn/index.php?title=Unicode&variant=zh-cn#.E8.B5.B7.E6.BA.90.E8.88.87.E7.99.BC.E5.B1.95
有很多意大利文版(除英文版)学习软件、百科全书等软件在中文系统上会出现乱码,解决方法:
WindowsXP内核是Unicode编码,支持多语种,对于Unicode编码的应用程序会正常显示原文(因为windows核心是用unicode代码写的,所以不存在问题),但是,很多程序不是用Unicode编码写的,这时WindowsXP系统可以指定以特定的编码运行非Unicode编码程序,中文版WindowsXP默认的是“简体中文GB2312”。你只需在控制面板--〉区域和语言选项--〉高级--〉为非Unicode程序的语言选择“意大利语”,即可正确运行意大利文版的游戏程序。分析:我理解的流程是这样:程序------>意大利语编码(转换表codepage)------>解释成unicode识别的编码(通过指定的转换表将非 Unicode 的字符编码转换为同一字符对应的系统内部使用的 Unicode 编码)------>被系统翻译成意大利文(因为每个unicode编码对应了相应的意大利文字),便可以正常显示了。二、消除网页乱码?网页乱码是浏览器对HTML网页解释时形成的,如果网页制作时编码为繁体big5,浏览器却以编码gb2312显示该网页,就会出现乱码,因此只要你在浏览器中也以繁体big5显示该网页,就会消除乱码。打个比方有些像字典,繁体字得用繁体字典来查看,简体字得用简体字典来查看,不然你看不懂。 【解决办法】:在浏览器中选择“编码”菜单,事先为浏览器安装多语言支持包(例如在安装IE时要安装多语言支持包),这样当浏览网页出现乱码时,即可手工更改查看此网页的编码方式,在浏览器中选择菜单栏下的“查看”/“编码”/“自动选择”/简体中文(GB2312),如为繁体中文则选择“查看”/“编码”/“自动选择”/繁体中文(BIG5),其他语言依此类推,便可消除网页乱码现象。 分析:因为繁体big5编码后的文件,每个文字对应一个二进制流(假设是1212对应繁这个字),当我们以编码gb2312显示该网页时,gb2312编码会到表里去找1212(二进制流不会变的)对应谁,肯定不再是繁这个字了,当然显示的就不再是那个繁字了,也就会出现乱码了。这样理解简单些,其实中间还要转换成同一字符对应的系统内部使用的 Unicode 编码,然后通过系统底层unicode编码还原成相应字符显示出来。
转载于:https://www.cnblogs.com/hiwuchong/p/6825527.html
Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2相关推荐
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...
- 【转】谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...
- 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的" ...
- Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...
- ansi、unicode、UCS、UTF等概念(转)
一.ansi定义 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准.这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.在 ...
- 字符的编码方式 ASCII 、GBK 、UTF-8 、Unicode 、Unicode big endian
字符的编码方式很多种 ,我们常用到的是ASCII .GBK .UTF-8 .Unicode .Unicode big endian等. 想查看的话,可以用记事本新建一个txt文档,里面输入字符或汉字, ...
- unicode、utf区别
字符集 首先,我们要明确2个概念,字符集和字符编码. 字符集:ASCII.GB2312.GBK.Unicode 字符编码:UTF-8.UTF-16.UTF-32 由于ASCII.GB2312.GBK不 ...
- ASCII 、GB2312、GBK、GB18030、unicode、UTF-8字符集编码详解 1
ASCII字符集编码 ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文字母.阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符. ...
- 字符编码ASCII、ANSI、DBCS、MBCS、GB2312、GBK、GB18030、UTF-8、UTF-16、Unicode、emoji
字符必须编码后才能被计算机处理.计算机使用的缺省编码方式就是计算机的内码. 内码是指操作系统内部的字符编码.早期操作系统的内码是与语言相关的.现在的Windows在系统内部支持Unicode,然后用代 ...
最新文章
- 百度成立国内首个深度学习教育联盟,将制定行业标准
- 注册与验证码php源代码,PHP验证码处理源代码
- rhel5下samba的配置
- 正向代理服务器和反向代理服务器的区别
- Linux下VSFTP配置全攻略
- P2601 [ZJOI2009]对称的正方形(二维哈希)(二分)
- 10-4-文章评论管理
- 代理模式(动态代理)
- 重置Winsock2
- 数字虚拟人metahuman,苹果手机做动作捕捉
- python中class什么意思_python class是什么
- base64加密解密
- 云服务器分割成虚拟主机销售,IDC行业为何兴起云虚拟主机业务
- 【漆天编程】MT4和MT5有什么区别?这是我见到过的最好的回答
- day13-搜索过滤
- ESP8266开发板+mysql数据库+DHT11
- 准确曝光一学就会 数码相机曝光的秘诀
- 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
- 阿米洛蓝牙连接教程_游戏手柄还不会使用?来这教你,轻松搞定游戏手柄连接问题...
- 应对当今的医疗器械软件测试开发挑战,如何选择测试软件