`
wanxiaotao12
  • 浏览: 467882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的编码问题

 
阅读更多

注意:

在理解有关编码的问题前,需要弄明白的几个问题

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中文乱码问题详解

    #### 三、Java编码转换的详细过程 Java程序从开发到运行的过程中,涉及到多个环节的编码转换,主要包括: 1. **源文件编码**:Java源文件(`.java`)在保存时通常采用操作系统默认的编码格式。例如,在中文Windows...

    java中文乱码问题

    Java 中文乱码问题是一个老生常谈的问题,特别是在 Web 应用中。今天,我们将从编码角度分析 Java 编译后在控制台和 Web 等终端显示乱码问题。 一、 Java 处理字符的原理 Java 使用 UNICODE 来存储字符数据,处理...

    Java 中文乱码问题

    在Java编程中,中文乱码问题是一个常见的困扰开发者的问题,特别是在处理输入输出或者网络通信时。这个问题涉及到字符编码的理解和正确使用。以下是对这个主题的详细解析: 首先,我们需要了解字符编码的基础知识。...

    java中文乱码问题解决

    "Java中文乱码问题解决" ...解决Java中文乱码问题需要了解编码的基本原理和各种编码格式的区别,并了解Java中常见的编码格式和应用场景。只有这样,才能更好地避免乱码问题,提高Java开发的效率和质量。

    java中文乱码问题处理方案.docx

    "java中文乱码问题处理方案" java 中文乱码问题处理方案是 java 开发者经常遇到的问题之一。这个问题的存在是由于 java 系统的中文问题原理没有被正确地理解和解决。只有当我们了解了 java 系统的中文问题原理,...

    Java中文乱码问题研究.pdf

    4. 使用Unicode编码:使用Unicode编码可以解决Java Web应用程序中的中文乱码问题。例如,可以使用UTF-8编码来解决中文乱码问题。 5. 设置数据库编码:设置数据库编码也可以解决Java Web应用程序中的中文乱码问题。...

    Java中文编码问题研究.pdf

    本文主要研究了Java中中文编码问题,探讨了Java SE序的运行原理,分析了Java单机程序、在服务器上运行JSP、Servlets或EJB等产生中文乱码的原因,并提出了相应的解决方案。 一、Java中文编码问题的来源 Java程序...

    java中文乱码解决问题

    JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...

    java中文乱码问题处理集锦

    ### Java中文乱码问题处理...中文乱码问题是Java开发中常见的问题,但通过理解字符编码的基本原理并采取合理的编码策略,可以有效地避免这类问题的发生。希望本文能够帮助大家更好地理解和解决Java中的中文乱码问题。

    java中文乱码问题详解.pdf

    2. Java编码转换详细过程: - 编程时,开发者在特定操作系统(如中文Win2K)上使用编辑器(如记事本)以GBK编码保存.java源文件。 - 使用JDK的javac编译器编译.java文件,Java编译器能够识别Unicode注释和字符串,...

    java解决中文乱码问题

    Java 解决中文乱码问题 Java 中文乱码问题是中国程序员无法避免的话题。乱码的出现是由于中文和英文的编码格式不同,解码也是不一样...解决 Java 中文乱码问题的关键是选择合适的编码方式和正确地配置 Tomcat 和 JSP。

    java中文乱码大全

    4. 跨平台运行问题:Java程序从一种操作系统移植到另一种操作系统时,由于编码格式的不一致性,可能会产生中文乱码问题。 针对上述问题,可以采取以下方法来解决Java中文乱码问题: 1. 统一编码格式:在Java程序中...

    Java中文编码问题小结

    Java中的中文编码问题是一个复杂而常见的议题,尤其是在跨平台开发中。本文主要涵盖了Java处理中文字符编码的关键点,包括Java虚拟机(JVM)的初始配置、编译过程中的编码设置、文件读写操作、XML文件处理以及字符串...

    Java中文乱码浅析及解决方案

    为了解决这个问题,我们可以统一Java编译器和源文件编码,例如在IDEA中设置项目编码为UTF-8,并在POM.XML中配置UTF-8编码: ```xml <!-- java 源文件编码 --> <project.build.sourceEncoding>UTF-8 ...

    java中文乱码之解决URL中文乱码问题的方法

    总之,解决Java中的URL中文乱码问题需要理解URL编码的原理,并在客户端和服务器端采取相应的措施,确保编码和解码的一致性。无论是通过JavaScript编码、Java服务器端解码,还是调整服务器配置,关键在于确保字符集的...

    jsp,java中文乱码问题另类解决方案,jni加密、解密编码

    总结来说,处理JSP和Java中的中文乱码问题需要理解字符编码的原理,并结合实际环境调整配置。当常规方法无效时,可以借助JNI实现加密和解密,以二进制数据形式绕过编码问题。这种解决方案虽然不常见,但在特定情况下...

    解决Linux操作系统下Java的中文乱码问题

    在Linux操作系统中,Java应用程序处理中文字符时可能会遇到乱码问题。这主要涉及到编码格式的不匹配,因为Linux系统默认采用UTF-8编码,而某些Java应用或文件可能使用了GB2312、GBK或其他编码。本篇将详细介绍如何...

    JAVA 乱码问题集合

    在Java编程中,乱码问题是一个常见的困扰,尤其是在处理字符编码时。以下是一些关键的知识点,可以帮助理解和解决Java中的乱码问题。 首先,我们需要理解字符编码的基本概念。字符编码是用来表示文本的一种方式,...

    Java中文乱码解决之道

    java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.com来解决问题。阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有...

Global site tag (gtag.js) - Google Analytics