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 ...
随机推荐
- Bound Found [POJ2566] [尺取法]
题意 给出一个整数列,求一段子序列之和最接近所给出的t.输出该段子序列之和及左右端点. Input The input file contains several test cases. Each t ...
- CSS之属性操作
(1)css text 文本 文本颜色:color 颜色属性被用来设置文字的颜色 颜色是通过css最经常的指定: *十六进制值—如:#FF0000 *一个RGB值---如:RGB(255,0,0) * ...
- 不让浏览器缓存index.html
参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...
- Python自学知识点----Day03
cd指令说明 1).作用:切换工作目录. 2). 命令(注意空格) 含义 cd ~===cd 回到家目录 cd . ...
- Ubuntu mysql连接错误10060/10061的方法
mysql 10060错误一般因为防火墙 ufw allow 3306; //允许外部访问3306端口ufw allow from 192.168.1.115; //允许此IP访问所有的本机端口uf ...
- Python全局变量和局部变量相关知识点
知识点一: #在函数外面定义的变量叫全局变量 num = 100 def AAA(): ''' 如果在函数中直接修改全局变量,那么会产生异常 如果真的需要修改,可以在函数中进行声明(前面加入globa ...
- Service Mesh 数据平面 SOFAMosn
https://mp.weixin.qq.com/s/DJ_IeDswGGFQiWqJ75pmig 开源 | Service Mesh 数据平面 SOFAMosn 深层揭秘 朵晓东 蚂蚁金服科技 20 ...
- 【C++】链表回环检测
//链表回环检测问题 #include<iostream> #include<cstdlib> using namespace std; ; struct node { int ...
- 原生js实现table表格列宽自由缩放
<!DOCTYPE html> <html> <head> <meta charset="gbk"> <title>ta ...
- 洛谷P4051 字符加密 [JSOI2007] SA
正解:SA 解题报告: 传送门! 和工艺那题有点儿像鸭,,,反正肯定就都想到倍长然后SA拍个序嘛先 然后就做完了,,,我发现SA的题刷起来特别susi,,,基本上紫题级别的都just一个模板就欧克了最 ...