java 编码 unicode_java编码-Unicode
【Unicode介绍】
百度百科:Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,并且兼容ISO-8859-1。
一个字符的Unicode编码是确定的,但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)
Unicode是字符集,它主要有UTF-8、UTF-16、UTF-32三种实现方式。由于UTF-8是目前主流的实现方式。
UCS(Universal Character Set,通用字符集),是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。它包括了其他所有字符集,保证了与其他字符集的双向兼容,即,如果你将任何文本字符串翻译到UCS格式,然后再翻译回原编码,你不会丢失任何信息。
UCS不仅给每个字符分配一个代码,而且赋予了一个正式的名字。表示一个UCS或Unicode值的十六进制数通常在前面加上“U+”,例如“U+0041”代表字符“A”。
Java的class文件采用utf8的编码方式,Java的字符串是unicode编码的
UTF-8
UTF-8是一种针对Unicode的可变长度字符编码,可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的系统无须或只须做少部份修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
UTF-8使用一到四个字节为每个字符编码,编码规则如下:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
转换表如下:
Unicode
UTF-8
0000 0000 —— 0000 007F
0XXX XXXX
0000 0080 —— 0000 07FF
110X XXXX 10XX XXXX
0000 0800 —— 0000 FFFF
1110XXXX 10XX XXXX 10XX XXXX
0001 0000 —— 001F FFFF
1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX
0020 0000 —— 03FF FFFF
1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX
0400 0000 —— 7FFF FFFF
1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX
根据上面的转换表,理解UTF-8的转换编码规则就变得非常简单了:第一个字节的第一位如果为0,则表示这个字节单独就是一个字符;如果为1,连续多少个1就表示该字符占有多少个字节。
以汉字"严"为例,演示如何实现UTF-8编码[3]。
已知"严"的unicode是4E25(100 1110 0010 0101),根据上表,可以发现4E25处在第三行的范围内(0000 0800-0000 FFFF),因此"严"的UTF-8编码需要三个字节,即格式是"1110xxxx 10xxxxxx 10xxxxxx"。然后,从"严"的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,"严"的UTF-8编码是"11100100 10111000 10100101",转换成十六进制就是E4B8A5。
ANSI:记事本的默认的编码方式,对于英文文件是ASCII编码,对于简体中文文件是GB2312编码。注意:不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中
Unicode:UCS-2编码方式,即直接用两个字节存入字符的Unicode码。该方式是倒序方式存取,该方式是"小头"little endian。
Unicode big endian:UCS-2编码方式,顺序方式存取,即 "大头"方式。
在EditPlus输入"严"字,依次选择ANSI、Unicode、Unicode big endian、UTF-8四种编码风格,然后另存,使用Hex Viewer工具进行查看:
ANSI:两个字节"D1 CF"正是"严"的GB2312编码。
Unicode:四个字节"FF FE 25 4E",其中"FF FE"表示小头(倒序)存储方式,真正的编码为"4E 25"。
Unicode big endian:四个字节"FE FF 4E 25","FE FF"表示大头(顺序)存储方式,真正编码为"4E 25"。
UTF-8:编码是六个字节"EF BB BF E4 B8 A5",前三个字节"EF BB BF"表示这是UTF-8编码,后三个"E4B8A5"就是"严"的具体编码,它的存储顺序与编码顺序是一致的。
java 编码 unicode_java编码-Unicode相关推荐
- java 处理unicode_Java与Unicode
Java与Unicode:Java的class文件采用utf8的编码方式,JVM运行时采用utf16.Java的字符串是unicode编码的.总之,Java采用了unicode字符集,使之易于国际化. ...
- java 处理unicode_java处理unicode字符
java处理unicode字符 关注:277 答案:4 mip版 解决时间 2021-01-19 19:19 提问者我不想放过你 2021-01-19 01:06 我的unicode字符存在sho ...
- java的unicode_Java中Unicode的中文范围
若要判断是否是中文 只需要用以下代码: for (int i = 0; i < sentence.length(); i++){ char c = sentence.charAt(i); if ...
- java是几位的unicode,下列说法错误的是()。A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种...
下列说法错误的是().A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种 更多相关问题 [名词解释] 捐躯juān qū [名词解释] 藕断丝连ǒu ...
- java乱码 java使用的编码是utf-8还是utf-16还是unicode
简单介绍编码 Unicode:是容纳世界所有文字符号的国标标准编码,使用四个字节为每个字符编码 UTF:是英文 Unicode Transformation Format 的缩写,意为把 Unicod ...
- JAVA中默认的编码方式是Unicode是什么意思?
编码问题存在两个方面:JVM之内和JVM之外. 1.Java文件编译后形成class 这里Java文件的编码可能有多种多样,但Java编译器会自动将这些编码按照Java文件的编码格式正确读取后产生cl ...
- 【JAVA编码专题】UNICODE,GBK,UTF-8区别
简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与g ...
- java菱形乱码 编码_JAVA:编码与乱码问题
一.为什么要编码? 由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解. byte一个字节即8 ...
- java 转换 unicode_JAVA中最方便的Unicode转换方法
在命令行界面用native2ascii工具 1.将汉字转为Unicode: C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii 测试 \u6 ...
最新文章
- 【安全漏洞】某CMS后台防护逻辑漏洞导致GETSHELL
- Python学习笔记(基础知识点一)
- huggingface实操_Transformers 简介(上)
- GDCM:Patch File的测试程序
- Windows下MariaDB数据库安装图文教程
- mybatils多次查询问题
- 华为5g汽车鸿蒙,网传华为携手极狐造车新图片,搭载5G天线+鸿蒙OS!
- 深入认识Tigase XMPP Server(上)
- linux 时区异常修正
- 【转】关于python中re模块split方法的使用
- rk399_android7.1的mipi驱动代码追踪(部分)
- Python input和raw_input的区别
- matlab中的显示精度
- python爬虫新浪微博_python爬虫抓取新浪微博数据
- 【子网划分两个实例】通过子网数来划分子网和通过计算主机数来划分子网
- 获取微信中的音频方法
- 等分曲线轮廓,法线方向矩形
- 记录docker自定义easyswoole镜像
- 【QGIS入门实战精品教程】10.1:QGIS基于DEM数据的地形分析案例教程
- 352记--扬哥本纪