Java基础语法-Unicode、UTF-8、UTF-16
1.Unicode(统一码、万国码),从名字里可以看出,unicode码表囊括世界上各国语言文字。 unidode中包含17个代码级别,第一个代码级别又称作基本的多语言级别(码点从U+0000到U+FFFF),
其余16个代码级别(码点从U+10000到U+10FFFF)包含一些辅助字符。这里说一下码点的概念:编码表中的某个字符对应的代码值。如汉字“我”在unicode中对应的码点为U+6211(在unicode3.0之前采用U+xxxx表示一个码点在Unicode3.0中采用U-xxxx xxxx表示一个码点),而unicode只是对字符的一种数字描述,并没有给出这些字符在计算机中应该以多少字节存储。
2.UTF-8是对unicode在计算机上的储存方式的实现,unicode码值
在0000 0000到0000 007F之间规定为一个字节储存,二进制格式为0xxxxxxx,
在0000 0080到000007FF之间规定为两个字节储存,二进制格式为110xxxxx 10xxxxxx,
在0000 0800到0000 FFFF之间规定为三个字节储存,二进制格式为1110xxxx 10xxxxxx 10xxxxxx
在0001 0000到0010 FFFF之间规定为四个字节储存,二进制格式为11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
一字节的表示范围为0到127即2的7次方,两个字节的表示范围128到2047即2的11次方。三个 字节的表示范围为2048到65535即2的16次方,n字节表示范围为2的(x的个数)的次方
3.下面是unicode码对UTF-8的转换,举个例子:
汉子中的“我”的unicode码为6211,其对应的二进制为 01100010 00010001
在0000 0800到0000 FFFF区间内,所以汉子“我”在UTF-8中为3个字节,三个字节在UTF-8中的格式为1110xxxx 10xxxxxx 10x
xxxxx,从右到左填充为 1110(0110) 10(001000) 10(010001)转换为十六进制为E68891,
括号里的二进制码从左到右读为6211的二进制码。
4。UTF-16
UTF-16:对任何一个字符都用两个字节储存。
UTF-16基于第一个代码级别,每个字符用16位表示(即两个字节四个十六进制数)通常称为代码单元。基于其他16个级别采用一对连续的代码单元进行编码,这样构成的编码值落入基本多语言级别中空闲的2048代码单元内,
称为替代区域[U+D800到U+DBFF用作第一代码单元,U+DC00到U+DFFF用作第二代码单元](1_048_576)(可表示2的20次方个字符)。
可以看出,当文本中英文居多时,采用UTF-8能够高效的利用计算机的储存空间,而文本以韩文中文居多时,UTF-16会比较适合。
Java基础语法-Unicode、UTF-8、UTF-16的更多相关文章
- 015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码
015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码 本文知识点:Unicode编码以及字符如何表示? ASCII码是美国提出的标准信息 ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- (四)Java 基础语法
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
- Java基础语法知识你真的都会吗?
第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...
- 02:Java基础语法(一)
Java基础语法 Java的关键字及保留字 关键字(Keyword) 关键字的定义和特点定义:被Java语言赋予了特殊含义的单词特点:关键字中所有字母都为小写注意事项:1)true.false.nul ...
- Java基础语法和基本数据类型
Java基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 对象:对象是类的一个实例,有状态(属性)和行为(方法). 类:类是一个模板,他描述一类对象的行为 ...
- 第2天 第一个程序&IDEA安装&Java基础语法
第一个程序 Hello,World! 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为java Hello.java [注意点]系统可能没有显示后缀名,必须手动打开 编写代码 publ ...
- Java基础语法01——变量与运算符
本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).
- Java基础语法(上篇)
Java基础语法(上篇) 知识概要: (1)关键字的表示与规范 (2)标示符 (3)注释 (4 ...
随机推荐
- Python-Django学习
1,安装Django与python版本的对应1.8 2.7,3.2--3.51.9,1.10 2.7,3.4,3.51.11 2.7,3.4,3.5,3.62.0 2.1 第一种安装:pip inst ...
- Android ble蓝牙问题
(1)蓝牙回调安卓4.4的蓝牙回调是在异步线程中(不在主线程),若要在蓝牙回调中执行更新界面的操作,记得切换到主线程去操作 (2)三星手机兼容性问题connectGatt()方法在某些三星手机上只能在 ...
- js之promise讲解
1 Promise概述 Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口. 那么,什么是Promises? 首先,它是一个对象,也就是说与其他JavaScript ...
- vue_事件绑定 v-on _事件修饰符
事件绑定 v-on 传参的同时,接收事件对象 <button @click="test('111', $evnt)">哈哈</button> 事件修饰符 阻 ...
- hook NtTerminateProcess进行应用的保护
这段时间在学习驱动,然后看到hook ssdt的代码,找了一个写的清晰的学习了一下:http://www.netfairy.net/?post=218 这里是hook NtOpenProcess,但是 ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...
- 男默女泪,ArcGIS AddIN 编辑逻辑赏析,走过路过,不要错过
看到了一段ESRI写的一个工具,我反编译了一下,学习工具中的几个代码片段 一. IEditTask task = (this._editor as IEditTaskSearch).get_TaskB ...
- The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for cn.e3mall:e3mall-common:jar:0.0.1-SNAPSHOT is missing, no dependency informati ...
- VIm快捷操作
vim快捷操作 移动 行级移动 $ 行尾 0 行头 段级移动 { 段首 } 段尾 屏幕级别 L: 屏幕尾部 H: 屏幕头部 文档级别 G: 文档尾部 1G:头部 nG:文档n行 删除 dd: 删除当前 ...
- App Store评论优化,让你的APP评论上涨
App Store评论优化怎么做 App Store评论优化,让你的APP评论上涨 关于「ASO评论优化」,主要分为三块.换评论,买评论,引导用户写评论. 可能有些刚接触ASO的朋友会问,为什么要给A ...