最近由一个编码问题。让我对另一个编码问题产生了疑惑。
即我们在写java源文件的时候一般使用的是utf-8编码,但是tomcat控制台(直接在bin里面启动的那个黑窗口)编码是gbk.为什么tomcat控制没有乱码问题?
最开始我想的是既然我的java源文件是按照utf-8编码,那么最后必须按照utf-8解码才不会有问题啊。为什么tomcat用gbk解码没有乱码问题?
然后查了下javac编译过程:
当javac编译的时候会根据-Dfile.encoding参数来进行编译,-Dfile.encoding,一般为系统默认字符,windows下为gbk。当我们在ecplise下编写文件的时候,一般我们会设置编码为utf-8,所以编译的时候会以utf-8编译。
重点来了:java编译采用的编码是unicode编码,所以这里面有一个转码的过程。java源文件的编码转码为unicode。这里我做了一个实验:
public static void main(String[] args) {
System.out.println((int)'我');
}
分别修改java源文件的编码为gbk,和utf-8运行上面的代码会发现打印出来的unicode编码都是25105。可见java都是使用unicode编码来对源文件的编码。相当于unicode是一座桥梁。
然后就是打印输出到控制台。
当我们执行下面这段代码的时候到底是什么意思?
String a = "您好";
byte[] bytes = a.getBytes("utf-8");
这句代码的意思是将unicode编码转化为utf-8编码。然后交由控制台去显示。
现在回到最开始的问题:为什么tomcat控制台没有乱码问题?
因为1、在编译源文件的时候,java会根据根据源文件的编码来用unicode编码。放在内存中。不管gbk还是utf-8.都会查找码表生成统一的unicode编码。
2、在控制台输出的时候,java会根据当前-Dfile.encoding参数进行转化,在windows上该编码为gbk,所以java会将unicode编码转化为gbk,然后tomcat控制台用的gbk解码。所以没有乱码问题。
换言之:对java来说,我们不用考虑那么多,只要保证调用String.getBytes("编码")这句代码使用的编码和最终用来解码的编码一致即可。
分享到:
相关推荐
总结,解决JAVA反编译文件时的中文乱码问题,关键在于确定源代码的原始编码,并确保反编译工具支持该编码。同时,良好的编码规范和项目配置也是避免此类问题的重要措施。通过上述方法,开发者可以更顺利地进行Java反...
对于很多人说jad反编译后中文显示乱码,其实显示的是unicode字符;jad命令中有可以让中文正常显示的 -8 - 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示。 最常用的反...
### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...
在版本1.6.6中,它针对中文字符的处理进行了优化,确保在反编译过程中不会出现乱码问题,这对于处理包含中文字符的Java项目来说尤其重要。 **Java反编译基础** Java反编译是将Java字节码(.class文件)转换回源...
在Java编程中,中文乱码问题是一个常见的困扰,尤其是在处理文件读写、网络传输或数据库操作时。本文将深入探讨几种解决Java中中文乱码问题的方法,并以MyEclipse为开发环境,结合实际示例进行讲解。 1. 文件读写中...
Java 中文乱码问题详解 Java 中文乱码问题是一个老生常谈的问题,特别是在 Web 应用中。今天,我们将从编码角度分析 Java 编译后在控制台和 Web 等终端显示乱码问题。 一、 Java 处理字符的原理 Java 使用 ...
JAVA 中文乱码问题是开发过程中常见的问题之一,解决这个问题需要了解乱码产生的原因,然后对症下药。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。 1. 以 POST 方法提交的表单数据中有中文字符 在...
在Java项目开发中,中文乱码问题是一个常见的困扰,特别是在项目的编译阶段。这主要涉及到字符编码的设置和处理,不正确的编码配置可能导致在显示或处理包含中文字符的文件时出现乱码。以下是一些针对Java项目编译时...
Java反编译是Java开发中一个重要的辅助工具,它能够帮助开发者查看已编译的`.class`文件中的源代码,即使原始的`.java`源文件已经丢失或未被提供。这个过程对于理解类库的工作原理、逆向工程、调试、学习或者分析...
总的来说,这个压缩包提供了一个全面的解决方案,包括使用Jad进行Java反编译以及处理反编译后可能出现的Unicode汉字编码。对于Java开发者来说,熟悉这些工具和方法有助于提升开发效率,同时也能增强对代码的理解和...
jd-gui.exe反编译后复制中文是乱码,xml,yml...等配置文件中文显示为乱码,本资源修改了编码,反编译后中文随意复制,配置文件显示也是正常的
Java编程语言在处理中文字符时可能会遇到乱码问题,这主要源于Java的源代码编码、JVM处理class文件以及不同操作系统、数据库系统之间的编码不一致。本文深入剖析了Java中文问题的根源,并提供了相应的解决方案。 一...
本文将详细介绍JD-GUI的使用以及如何解决中文乱码问题。 JD-GUI是一款图形用户界面的Java反编译器,由JODE项目开发团队提供。它支持直接打开单个.class文件,并实时显示反编译出的源代码,方便开发者快速查看和理解...
在IT行业中,尤其是在Java编程领域,中文乱码问题是一个常见的挑战。这主要涉及到字符编码的处理,涉及到Unicode、GBK、UTF-8等不同编码格式之间的转换和一致性问题。本篇文章将深入探讨这个问题,并提供一种彻底...
"java中文乱码问题处理方案" java 中文乱码问题处理方案是 java 开发者经常遇到的问题之一。这个问题的存在是由于 java 系统的中文问题原理没有被正确地理解和解决。只有当我们了解了 java 系统的中文问题原理,...
### Java编译与编码转换详解 #### 一、Java文件编辑与编码转换 在Java开发过程中,文件的编码选择非常重要,因为它直接关系到文件内容如何被正确解释和处理。下面我们将详细探讨Java文件编辑过程中涉及的编码转换...
在 Android 开发中,Eclipse 编译环境的设置和中文乱码问题是两个常见的问题。本文将通过图文并茂的方式,解决这两个问题,从而帮助开发者快速解决编译环境和中文乱码问题。 一、Eclipse 编译环境设置 在 Eclipse ...
描述中提到的两个关键问题分别是“中文丢失”和“中文乱码”。当尝试从反编译的代码中复制中文内容时,由于编码不匹配,可能导致中文字符无法正确显示或丢失。另一方面,当jd-gui打开包含中文的xml或properties文件...
编译乱码问题是指在Java编译过程中,编译器无法正确地解析Java源代码中的字符,从而导致编译失败或出错。本文将详细介绍Java package编译乱码问题解决方法。 一、Java package是什么? Java package是Java中的一种...