字符编码:Unicode和UTF-8之间的关系

可以参考下面blog:https://blog.csdn.net/xiaolei1021/article/details/52093706/

这篇文章写得不错

(1)java中字符为什么是2个字节?

(2)为什么常说unicode是2个字节?

(3)UTF-8的中文字符串中,中文一个字可能占2-3个字节,变成char数组时候,为什么char可以存放一个汉字。

这三个问题其实算是一个问题。

在JVM中,统一都是用unicode编码的。所以在运行过程中,文字存储下来以后,一个汉字就占了一个字符,2个字节。

uft-8字符串拆分成char[]时候,会先变成unicode。

Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储

UTF-8是Unicode的实现方式之一。

UTF-8

0开头:代表一个字节组成的UTF-8字符

11开头:代表2个字节组成的UTF-8字符

111开头:代表3个字节组成的UTF-8字符

10开头代表的是,一个UTF-8字符串的组成部分,肯定不是开头。

开头肯定为:0xxxxxxx 、11xxxxxx 、111xxxxx、1111xxxx

身体肯定为:10xxxxxx

xxxxxx代表的就是实际的编码内容

UTF-8相比较Unicode的好处。(这句话其实有点问题)

Unicode不管是英文还是中文,肯定要占2个字节。

UTF-8 英文时候只要占1个字节,中文可能2-3个字节,还是其他语种。

3、Unicode\UTF-8\GBK 区别和联系的更多相关文章

  1. is 和 == 的区别,utf和gbk的转换,join用法

    is 和 == 的区别 # is 比较的是内存地址 # == 比较的是值 a = 'alex' b = 'alex' #int,str(小数据池)会被缓存,为了节约内存 print(id(a),id( ...

  2. 浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。

    浅谈ASCII .ISO8859-1.GB2312.GBK.Unicode.UTF-8 的区别. 首先,先科普一下什么是字符编码.字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号 ...

  3. unicode编码与utf-8 区别

    unicode编码与utf-8 区别 如果是为了跨平台兼容性,只需要知道,在 Windows 记事本的语境中: 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码.[1] ...

  4. Unicode(UTF&UCS)深度历险

    Unicode(UTF&UCS)深度历险 计算机网络诞生后,大家慢慢地发现一个问题:一个字节放不下一个字符了!因为需要交流,本地化的文字需要能够被支持. 最初的字符集使用7bit来存储字符,因 ...

  5. AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别

    大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...

  6. 中文字符集编码unicode,gb2312,cp936,GBK,GB18030介绍

    概要: UTF-8的一个特别的好处是它与ISO- 8859-1完全兼容,可以表示世界上所有的字符,汉字通常用3个字节来表示.GB2312的code page是CP20936.GBK的code page ...

  7. Ansi,UTF8,Unicode,ASCII编码的区别

    Ansi,UTF8,Unicode,ASCII编码的区别 近日需要不同的编码,关于上述编码,一直迷迷糊糊,查了些资料,总算大致了解了, 下面全是从网上搜来的: 1.  ASCII和Ansi编码     ...

  8. 各种编码中汉字所占字节数;中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    vim settings set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,latin1set termencoding=utf-8se ...

  9. 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030

    中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030 cp936是微软自己发布的用在文件系统中的编码方式.而bg2312是中国国家标准.我明白mount -t vfa ...

  10. 各种字符编码方式详解及由来(ANSI,UNICODE,UTF-8,GB2312,GBK)

    一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们.Let's go! ...

随机推荐

  1. .Net写的比较清晰的接口

    尼玛,隔行如隔山. .Net真操蛋. /// <summary> /// 加入群 /// </summary> /// <returns></returns& ...

  2. 120.VS调试技巧

    设置断点调试 在一行代码的左侧点击即可设置断点,按F5(调试->开始调试)即可运行到第一个端点处暂停 逐语句调试 按F11(调试->逐语句)即可开始一步一步执行 逐过程调试 按F10(调试 ...

  3. BZOJ离线版

    http://dh.attack.cf/bzoj/ 闲来无事自己搞的 可以查看权限题 至于这个东西怎么搞, 可以私信我2333 网站已经挂掉. 想看的可以去rxz大爷的blog http://ruan ...

  4. 【基础篇】Android下拉列表框(Spinner)的基本使用

    个人学习经验:第一步:新建工程,在main.xml中,main.xml内容如下: <?xml version="1.0" encoding="utf-8" ...

  5. maven项目引入sqljdbc4 找不到包的完美 解决方案

    今天碰到了这个问题,解决了,顺便做一下记录.首先来 重现 一下这个问题,maven install报错,说 找不到这个包,但是其实 我已经安装了. 我们 再来 看看 maven本地仓库里面有 什么,这 ...

  6. ssh-keygen && ssh-copy-id 生成管理传输秘钥

  7. JNDI学习总结(4)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  8. View_01_LayoutInflater的原理、使用方法

    View_01_LayoutInflater的原理.使用方法 本篇博客是郭神博客Android视图状态及重绘流程分析,带你一步步深入了解View(一)的读书笔记的笔记. LayoutInflater简 ...

  9. Exclusive or

    题目连接 题意: 每次给一个n.求 (2≤n<10500) 分析: 先说一下自己的想法,假设将n换成二进制数,也就一两千位左右,那么一位一位处理是能够接受的. 将0-n写成二进制形式后,显然全部 ...

  10. elasticsearch transport 请求发送和处理

    前一篇分析对nettytransport的启动及连接,本篇主要分析transport请求的发送和处理过程.cluster中各个节点之间需要相互发送很多信息,如master检测其它节点是否存在,node ...