注意:
在理解有关编码的问题前,需要弄明白的几个问题
a、java中定义的char, String 都是以unicode码存储
b、str.getByes(charset), 些方法是将unicode码转换为指定编码格式的字节数组,如果方法参数为空,将会按照jvm的默认字符集转化,
c、同样new String("string".getBytes()); 使用字节数组创建字符串对象,使用jvm的默认字符集
Charset.defaultCharset(); //获取jvm默认的字符集
Charset.availableCharsets();//获取jvm支持的字符集
验证代码:
String str="中国";
System.out.println("str.getBytes默认字符集:");
for(byte b : str.getBytes()) {
System.out.print(Integer.toHexString(b)+" ");
}
System.out.println("\n str.getBytes JVM默认字符集:"+Charset.defaultCharset());
for(byte b : str.getBytes(Charset.defaultCharset())) {
System.out.print(Integer.toHexString(b)+" ");
}
System.out.println("\n str.getBytes unicode字符集:");
for(byte b : str.getBytes("unicode")) {
System.out.print(Integer.toHexString(b)+" ");
}
System.out.println("\n 字符串对应的16进制");
for(char b : str.toCharArray()) {
System.out.println(Integer.toHexString(b));
}
执行结果:
str.getBytes默认字符集:
ffffffd6 ffffffd0 ffffffb9 fffffffa
str.getBytes JVM默认字符集:GBK
ffffffd6 ffffffd0 ffffffb9 fffffffa
str.getBytes unicode字符集:
fffffffe ffffffff 4e 2d 56 fffffffd
字符串对应的16进制:
4e2d
56fd
结论:
1、str.getBytes() 与 str.getBytes(Charset.defaultCharset()) 返回的字节码是一样的, 所以str.getBytes() 是以jvm虚拟机的默认字符集返回字节数组
2、unicode码是以16进制存储的
附加:汉字与unicode的相互转换
代码:
//\u4e2d\u56fd是unicode编码,代表“中国”
System.out.println("\u4e2d\u56fd");
//将一个字符转化为16进制字符串
System.out.println(Integer.toHexString((char)'中'));
//将一个字符,以16基数,将字符串参数解析为有符号的整数,然后再转化为char
System.out.println((char)Integer.parseInt("4e2d", 16));
运行结果:
中国
4e2d
中
分享到:
相关推荐
#### 三、Java编码转换的详细过程 Java程序从开发到运行的过程中,涉及到多个环节的编码转换,主要包括: 1. **源文件编码**:Java源文件(`.java`)在保存时通常采用操作系统默认的编码格式。例如,在中文Windows...
Java 中文乱码问题是一个老生常谈的问题,特别是在 Web 应用中。今天,我们将从编码角度分析 Java 编译后在控制台和 Web 等终端显示乱码问题。 一、 Java 处理字符的原理 Java 使用 UNICODE 来存储字符数据,处理...
在Java编程中,中文乱码问题是一个常见的困扰开发者的问题,特别是在处理输入输出或者网络通信时。这个问题涉及到字符编码的理解和正确使用。以下是对这个主题的详细解析: 首先,我们需要了解字符编码的基础知识。...
"Java中文乱码问题解决" ...解决Java中文乱码问题需要了解编码的基本原理和各种编码格式的区别,并了解Java中常见的编码格式和应用场景。只有这样,才能更好地避免乱码问题,提高Java开发的效率和质量。
4. 使用Unicode编码:使用Unicode编码可以解决Java Web应用程序中的中文乱码问题。例如,可以使用UTF-8编码来解决中文乱码问题。 5. 设置数据库编码:设置数据库编码也可以解决Java Web应用程序中的中文乱码问题。...
本文主要研究了Java中中文编码问题,探讨了Java SE序的运行原理,分析了Java单机程序、在服务器上运行JSP、Servlets或EJB等产生中文乱码的原因,并提出了相应的解决方案。 一、Java中文编码问题的来源 Java程序...
在Java开发过程中,中文乱码问题可谓是开发者面临的常见难题之一。这一问题的出现,主要是由于开发者对Java系统中文处理的原理缺乏足够的认识和正确的处理方法。Java系统处理中文的能力,与其默认的字符编码集...
JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...
### Java中文乱码问题处理...中文乱码问题是Java开发中常见的问题,但通过理解字符编码的基本原理并采取合理的编码策略,可以有效地避免这类问题的发生。希望本文能够帮助大家更好地理解和解决Java中的中文乱码问题。
2. Java编码转换详细过程: - 编程时,开发者在特定操作系统(如中文Win2K)上使用编辑器(如记事本)以GBK编码保存.java源文件。 - 使用JDK的javac编译器编译.java文件,Java编译器能够识别Unicode注释和字符串,...
4. 跨平台运行问题:Java程序从一种操作系统移植到另一种操作系统时,由于编码格式的不一致性,可能会产生中文乱码问题。 针对上述问题,可以采取以下方法来解决Java中文乱码问题: 1. 统一编码格式:在Java程序中...
Java中的中文编码问题是一个复杂而常见的议题,尤其是在跨平台开发中。本文主要涵盖了Java处理中文字符编码的关键点,包括Java虚拟机(JVM)的初始配置、编译过程中的编码设置、文件读写操作、XML文件处理以及字符串...
为了解决这个问题,我们可以统一Java编译器和源文件编码,例如在IDEA中设置项目编码为UTF-8,并在POM.XML中配置UTF-8编码: ```xml <!-- java 源文件编码 --> <project.build.sourceEncoding>UTF-8 ...
总之,解决Java中的URL中文乱码问题需要理解URL编码的原理,并在客户端和服务器端采取相应的措施,确保编码和解码的一致性。无论是通过JavaScript编码、Java服务器端解码,还是调整服务器配置,关键在于确保字符集的...
总结来说,处理JSP和Java中的中文乱码问题需要理解字符编码的原理,并结合实际环境调整配置。当常规方法无效时,可以借助JNI实现加密和解密,以二进制数据形式绕过编码问题。这种解决方案虽然不常见,但在特定情况下...
在Linux操作系统中,Java应用程序处理中文字符时可能会遇到乱码问题。这主要涉及到编码格式的不匹配,因为Linux系统默认采用UTF-8编码,而某些Java应用或文件可能使用了GB2312、GBK或其他编码。本篇将详细介绍如何...
在Java编程中,乱码问题是一个常见的困扰,尤其是在处理字符编码时。以下是一些关键的知识点,可以帮助理解和解决Java中的乱码问题。 首先,我们需要理解字符编码的基本概念。字符编码是用来表示文本的一种方式,...
java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.com来解决问题。阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有...
2. JAVA编码转换的详细过程: - 编程阶段:在中文操作系统(如Win2K)上,使用编辑器(如记事本)保存的.java文件采用系统默认编码(GBK)。 - 编译阶段:`javac.exe`编译.java文件,此时源代码的GBK编码不影响...