ascii码,gbk编码,unicodo码,utf-8码
本文简略讲解这几个编码的关系,
1、ASCII (American Standard Code for Information Interchange):美国信息交换标准代码,
主要应用于英文的编码,每个英文占用一个字节,存储到文件中。
2、gbk,兼容英文编码的情况下,可用于中文编码,其中,英文单词占用一个字节,中文字占用两个字节,存储到文件中。
3、unicode码,也叫万国码、单一码,由于各个国家的文字不同,它为每种语言中的每个字符设定了统一并且唯一的值。长度很长,例如英文字母“A”的unicode码值为65,中文“智”的unicode码值为26234,如果用同样长度的字节保存,那么对于英文字母来说就是浪费了空间,所以此时出现了utf-8,针对Unicode的一种可变长度字符编码。
4、utf-8,可变长度字符编码。对于英文来说,只需要使用一个字节代表,对于中文来说,需要三字自己代码,那么我们怎么知道utf-8编码格式下的字节是一个一组还是三个一组?这就需要用到utf-8的定义方式。
UTF-8,采用1-4个字符进行传输和存储数据。
编码规则:使用下面的模板进行转换
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
如上图:
如果是英文,那么他占用一个字节,字节的二进制起始位为0,一个字节
如果是中文,那么它占用三个字节,字节的二进制起始位为1110,三个字节
下面举例说明utf-8怎么表示中文的,
char aChar = '智'; System.out.println(aChar); int index = (int)aChar; System.out.println("unicode十进制:"+index); String hexString = HexUtil.toHex(index); System.out.println("unicode十六进制:"+hexString);
通过以上代码,我们知道中文“智”的unicode码是26234,那么他的通过utf-8三个字节表示,是什么呢?使用如下代码
for (int i = 0; i < bytes.length; i++) {System.out.println(bytes[i]);System.out.println(getBinaryString(bytes[i]));System.out.println("-----------------"); }
得到这三个字节的值为 -26,-103,-70,
他们的补码分别是11100110,10011001,10111010
对应上述 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx
也就是utf-8代表的xxxx中的值为0110 011001 111010,使用二进制,转换,正好是26234
所以,utf-8的编码格式是这样得到的, 通过规定的byte数组得到二进制数,对比unicode码表,得到中文名称。
ascii码,gbk编码,unicodo码,utf-8码相关推荐
- 字符集ASCII、GBK、UNICODE、UTF在储存字符时的区别
ASCII编码(American Standard Code for Information Interchange,美国信息互换标准代码),使用127个8进制字节表示英文和半角字符. GBK (Gu ...
- Python 入门 26 —— ASCII 编码、Unicode 编码、 UTF-32、 UTF-16、 UTF-8、 GB2312 编码、 GBK 编码
计算机存储和处理信息都是以一个8位的二进制字节为单位的,例如:0b 1111 0000.一个字母.汉字等如何用一个二进制的数(编码)来表示呢.在计算机发展初期,因为没有人能预料到计算机会有现在这么大的 ...
- Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
一般的,在Verilog中最常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码. 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻状态转 ...
- JPEG2000中最佳截断嵌入码块编码EBCOT
1. 最佳截断嵌入码块编码EBCOT 最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在 ...
- [编码]ASCII、GBK、Unicode(万国码) 和 UTF-8
American ASCII编码 (American Standard Code for Information Interchange,美国信息互换标准代码) China gbk编码 ...
- 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)
参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- ASCII码、Unicode编码对照表 —— ASCII控制字符 Unicode编码 字符编码的前世此生
ASCII控制字符 Unicode编码 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字 ...
- 计算机底层:ASCII码、区位码、国标码、汉字机内码,还有字形码和输入输出编码之间的关系以及介绍
计算机底层:ASCII.区位码.国标码.汉字机内码之间的关系,还有字形码和输入输出编码之间的关系以及介绍 键盘上有:数字.字母.符合.这些都称作为字符,而它们的组合就叫做:字符串. ASCII 键盘上 ...
- python用gbk编码自己的名字_基于python的汉字转GBK码
说明: 今天想用python调用百度框计算的搜过结果,看到了URL里面的汉字用GBK编码,虽然可以直接在URL里面加入中文,之前也做过一个简体字转GBK码的python函数,但还是略嫌麻烦,今天改了一 ...
最新文章
- AI只跟科技巨头有关?小公司如何在AI时代竞争?
- arcgis插值不覆盖区划图_ArcGIS绘图—空气质量站点数据插值绘制等值线图
- 工作191:loading不声明
- Pytorch与tensorflow模型转换
- Node.js_1.1
- Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join
- Nginx+Tomcat搭建集群环境
- python中的pass是空语句一般用作占位语句_1、python基本语法
- Python画汉诺塔
- Waves V13全新更新 Waves V13全套音频插件 Mac版
- delphi 访问https 接口
- python中倍数怎么表示_在Python3中如何计算字典中特定值的倍数
- 如何利用COOC软件绘制动态交互图?
- TSM是NFC应用发展的关键环节
- axis.jar的应用
- a标签download属性无效_html常用标签大全
- 【测试用例练习】八、淘宝网站测试用例
- MapReduce系列之MapReduce的输出
- Linux安装Googlepinyin
- Reality Labs首次向媒体开放,空间音频、EMG腕带体验大公开
热门文章
- 高通骁龙845的android手机有哪些,骁龙845手机有哪些 2018搭载高通骁龙845的手机推荐...
- arcgis唯一值数已达到默认限制(大于3365536).
- Node.js 学习笔记day007
- Python经验总结
- 微信公众号中h5页面扫一扫实现
- 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)
- NullPointerException异常
- 大数据三种主流架构(Lambda、Kappa、IOTA)
- Linux必备技能:vi的使用
- Zeroc-Ice(ice-Touch)详解与配置应用