本文简略讲解这几个编码的关系,

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码相关推荐

  1. 字符集ASCII、GBK、UNICODE、UTF在储存字符时的区别

    ASCII编码(American Standard Code for Information Interchange,美国信息互换标准代码),使用127个8进制字节表示英文和半角字符. GBK (Gu ...

  2. Python 入门 26 —— ASCII 编码、Unicode 编码、 UTF-32、 UTF-16、 UTF-8、 GB2312 编码、 GBK 编码

    计算机存储和处理信息都是以一个8位的二进制字节为单位的,例如:0b 1111 0000.一个字母.汉字等如何用一个二进制的数(编码)来表示呢.在计算机发展初期,因为没有人能预料到计算机会有现在这么大的 ...

  3. Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码

    一般的,在Verilog中最常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码. 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻状态转 ...

  4. JPEG2000中最佳截断嵌入码块编码EBCOT

    1. 最佳截断嵌入码块编码EBCOT 最佳截断嵌入码块编码 (embedded block coding with optimized truncation,EBCOT)是David Taubman在 ...

  5. [编码]ASCII、GBK、Unicode(万国码) 和 UTF-8

    American ASCII编码 (American Standard Code for Information Interchange,美国信息互换标准代码)  China    gbk编码     ...

  6. 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客: Unicode与UTF-8互转(C语言实现):http://blog.csdn.net/tge7618291/article/details/7599902 汉字 Unicode 编码范围 ...

  7. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  8. ASCII码、Unicode编码对照表 —— ASCII控制字符 Unicode编码 字符编码的前世此生

    ASCII控制字符  Unicode编码 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码,ASCⅡ)是基于拉丁字 ...

  9. 计算机底层:ASCII码、区位码、国标码、汉字机内码,还有字形码和输入输出编码之间的关系以及介绍

    计算机底层:ASCII.区位码.国标码.汉字机内码之间的关系,还有字形码和输入输出编码之间的关系以及介绍 键盘上有:数字.字母.符合.这些都称作为字符,而它们的组合就叫做:字符串. ASCII 键盘上 ...

  10. python用gbk编码自己的名字_基于python的汉字转GBK码

    说明: 今天想用python调用百度框计算的搜过结果,看到了URL里面的汉字用GBK编码,虽然可以直接在URL里面加入中文,之前也做过一个简体字转GBK码的python函数,但还是略嫌麻烦,今天改了一 ...

最新文章

  1. AI只跟科技巨头有关?小公司如何在AI时代竞争?
  2. arcgis插值不覆盖区划图_ArcGIS绘图—空气质量站点数据插值绘制等值线图
  3. 工作191:loading不声明
  4. Pytorch与tensorflow模型转换
  5. Node.js_1.1
  6. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join
  7. Nginx+Tomcat搭建集群环境
  8. python中的pass是空语句一般用作占位语句_1、python基本语法
  9. Python画汉诺塔
  10. Waves V13全新更新 Waves V13全套音频插件 Mac版
  11. delphi 访问https 接口
  12. python中倍数怎么表示_在Python3中如何计算字典中特定值的倍数
  13. 如何利用COOC软件绘制动态交互图?
  14. TSM是NFC应用发展的关键环节
  15. axis.jar的应用
  16. a标签download属性无效_html常用标签大全
  17. 【测试用例练习】八、淘宝网站测试用例
  18. MapReduce系列之MapReduce的输出
  19. Linux安装Googlepinyin
  20. Reality Labs首次向媒体开放,空间音频、EMG腕带体验大公开

热门文章

  1. 高通骁龙845的android手机有哪些,骁龙845手机有哪些 2018搭载高通骁龙845的手机推荐...
  2. arcgis唯一值数已达到默认限制(大于3365536).
  3. Node.js 学习笔记day007
  4. Python经验总结
  5. 微信公众号中h5页面扫一扫实现
  6. 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)
  7. NullPointerException异常
  8. 大数据三种主流架构(Lambda、Kappa、IOTA)
  9. Linux必备技能:vi的使用
  10. Zeroc-Ice(ice-Touch)详解与配置应用