UTF-8
一、
1.Unicode
从AsciII表中获知 A = '65',即 在操作字符A时,计算机内部是对 (Unicode) 65进行操作
2.Java char <==> Unicode 标准字符集
int a = 'A';
System.out.println(a);
// 将字符赋值给int类型数据,未报错,可以理解为 'A' 字符A指代的就是65
输出结果:65
3.UTF-8 表示 1~4字节变长
为何中文使用UTF-8编码为3字节?
3.1 输出汉字的二进制编码
Integer b = '中';
System.out.println(Integer.toBinaryString(b));
Integer c = '国';
System.out.println(Integer.toBinaryString(c));
输出结果:
100111000101101
101011011111101
3.2 编码
String d = "中" ;
byte [] dArray = d.getBytes("UTF-8");
for(Integer index = 0 ; index < dArray.length; index ++){
System.out.println(Integer.toBinaryString(dArray[index] & 0xff));
}
System.out.println();
String e = "国" ;
byte [] eArray = e.getBytes("UTF-8");
for(Integer index = 0 ; index < eArray.length; index ++){
System.out.println(Integer.toBinaryString(eArray[index] & 0xff));
}
输出结果:
11100100
10111000
10101101
11100101
10011011
10111101
3.对比分析结果
1110_ _ _ _ 10_ _ _ _ _ _ 10_ _ _ _ _ _
中:100111000101101
(1110)0100 (10)111000 (10)101101
国:101011011111101
(1110)0101 (10)011011 (10)111101
即
通过3个字节来表示,
2~4*2~6*2~6=2~16
故汉字的Unicode的二进制为16位
101011011111101(长度16)
4.编码
// 结果:中
String h = new String(dArray,"UTF-8");
System.out.println(h);
// 结果:乱码
String g = "国" ;
byte [] gArray = g.getBytes("GBK");
for(Integer index = 0 ; index < gArray.length; index ++){
System.out.println(Integer.toBinaryString(gArray[index] & 0xff));
}
String i = new String(gArray,"UTF-8");
System.out.println(i);
结论:
用什么格式解码用什么格式编码
5.java web 乱码
tomcat的自带编码是ISO-8859-1的格式
String j = new String(str.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(j);
二、编码特点
1.
一种变长的编码方式。
用1~6个字节表示一个符号,根据不同的符号而变化字节长度。
Unicode编码长度是固定的,无论是数字、英文还是火星文。所以Unicode编码有点浪费空间。UTF8是针对unicode的空间浪费现象,它对字符的长度是动态的。
2.
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
示例:如上
博文参考:
Java中字符编码问题和中文占几个字节的问题(ASCII Unicode UTF-8 )
分享到:
相关推荐
如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE...
标题中的“中文-UTF-8编码转换器”指的是一个软件工具,它的主要功能是帮助处理中文和其他特殊字符在UTF-8编码环境下可能出现的乱码问题。UTF-8是一种广泛使用的Unicode字符编码方案,它可以表示Unicode标准中的所有...
最近的项目(Delphi开发),需要经常和java语言开发的系统进行数据交互(Socket通信方式),数据编码约定采用UTF-8编码。 令我无语的是:JAVA系统那边反映说,Delphi发的数据他们收到是乱码,而我这边(Delphi7,...
UTF-8编码的文本文件在处理中文字符时,如果没有正确设置编码,可能会导致中文字符显示不正确,即出现乱码现象。SAS EG是一个图形用户界面的程序,它提供了数据管理、统计分析、报告创建等功能,但它在处理不同编码...
UTF-8编码是一种广泛使用的字符编码标准,它在信息技术领域起着至关重要的作用。这个“UTF-8编码转换器”工具旨在帮助用户方便地将文本数据从其他编码格式转换为UTF-8,确保数据在不同系统和平台之间的兼容性。 在...
百度编辑器ASP版UTF-8编码是一个用于网页内容编辑的工具,它专为ASP(Active Server Pages)开发环境设计,并采用UTF-8编码标准。UTF-8是一种广泛使用的多字节字符编码,能够支持全球大部分语言,包括中文,使得...
UTF-8编码是一种广泛使用的字符编码标准,它能够表示Unicode字符集中的所有字符。在Visual Basic编程环境中,处理UTF-8编码的文件或数据时,你需要理解如何读取、写入以及转换UTF-8格式的数据。以下是一些关键的知识...
为大家提供Python的UTF-8编码查询表,大家可以对照左列的编码查询右列的汉字。 例:\u4e00对应汉字“一”
GBK编码和UTF-8编码是两种广泛使用的字符编码标准,它们各有特点,但不兼容,因此在不同环境下进行数据交换时,需要进行相应的转换。 GBK编码是中国大陆广泛采用的一种汉字编码标准,它是GB2312的扩展,包含了更多...
UTF-8编码转换工具是一种专门用于处理文本编码问题的实用程序,它可以帮助用户批量将非UTF-8编码的文件转换为UTF-8编码格式。在IT领域,编码是存储和传输字符的重要方式,不同的编码标准可能导致乱码问题,尤其是在...
本资源主要关注如何判断一个文本文件是否采用UTF-8编码。 在Windows系统中,比如Windows 7旗舰版,我们经常使用Notepad.exe(记事本)来查看和编辑文本文件。在编程环境中,有时候我们需要编写代码来检查文件的编码...
文件里有详细的代码,编码格式选择UTF-8编码,亲测在linux下可以直接运行。泰文在osd输出的流程一般是泰文先转换成Unicode编码,然后调用freetype进行文字渲染叠加
标题中的“PB9转换utf-8例子”指的是在PowerBuilder 9(PB9)环境下将数据从非UTF-8编码转换为UTF-8编码的一种解决方案。由于PB9本身不直接支持这种转换,开发者通常需要利用外部库或者特定的编程技巧来实现这个功能...
### UTF-8编码详解与汉字码表解析 #### UTF-8编码原理 UTF-8(Unicode Transformation Format - 8 bits)是一种变长字符编码,由Ken Thompson于1992年设计,旨在解决多语言环境下字符编码兼容性问题。其核心优势...
### UTF-8编码详解 #### 一、简介 在计算机科学领域中,字符编码是将字符映射到二进制数字的一种方式。其中,UTF-8(8位通用转换格式)是一种可变长度的字符编码,它兼容ASCII,并且能够表示Unicode标准中的所有...
GBK、UTF-8批量文件3秒快速转码工具(支持GBK,UTF-8免费转换),UTF-8/GBK编码在线转换工具,压缩包可以有多目录与文件,如目录中有图片不会转码,但是会随转码好的文件一起打包下载。 使用帮助 . 上传压缩包(仅支持zip...
对于ASCII字符,UTF-8编码与ASCII相同,都是单字节。UTF-8的特殊之处在于它包含一个字节顺序标记(BOM),即UTF-8+BOM,但大多数情况下,UTF-8无BOM更常见。 在PHP中,进行字符编码转换可以使用内置函数,如`mb_...
在"xml.rar_UTF XML_UTF-8编码_utf_utf-8_xml utf-8"这个压缩包中,我们主要探讨的是与XML文档相关的编码问题,特别是UTF-8编码。 UTF-8是一种广泛使用的Unicode字符编码方案。它能够表示Unicode标准中的所有字符,...
JDK 中文转 utf-8 编码 JDK 中文转 utf-8 编码是 Java 开发中常见的问题,特别是在处理中文字符时。_utf-8 编码是一种通用的编码方式,可以表示所有 Unicode 字符。在 JDK 中提供了一个工具 native2ascii.exe,可以...