.class文件反编译,汉字乱码问题
领导扔过来一个war文件,让我修改这个系统,没找到src,没有源文件,只能用反编译工具,把web-inf里面的.class文件反编译过来,结果发现,反编译过来的汉字全变成了不知道该怎么解决了,来论坛上求教一下~ 反编译 乱码 java --------------------编程问答-------------------- 你选中项目右击选择属性里面可以设置语言比如utf-8 --------------------编程问答--------------------
我这是在反编译工具里面截的图,不能直接从工具中拷出文件黏贴到项目里 --------------------编程问答-------------------- 你用jad试试,加上 -8参数
-8 - 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示! --------------------编程问答-------------------- 。。。。居然可以饭编译到这种程度 --------------------编程问答-------------------- 但里面却是gb2312形式的unicode编码,因此我们还得做一个工作,将这些编码转换成中文。
使用ant脚本来完成这个工作,内容比较简单,加了注释,应该很好明白,脚本文件名为build.xml,它放在src目录下,和反编译所得的包处在同一层。
<?xml version="1.0" encoding="GBK"?>
<project name="decompile" basedir="." default="native2ascii">
<!-- 定义输出目录 -->
<property name="build" value="build"/>
<!-- 清除输出目录 -->
<target name="clean">
<delete dir="${build}"/>
</target>
<!-- 创建输出目录 -->
<target name="init" depends="clean">
<mkdir dir="${build}"/>
</target>
<!-- 编码转换 reverse="true"为反向转换 -->
<target name="native2ascii" depends="init">
<native2ascii reverse="true" src="${basedir}" encoding="gb2312" dest="${basedir}/${build}" />
</target>
</project>
有一个地方需要补充一下,在native2ascii元素中,src和dest这两个属性表示着路径。如果反编译后,src目录下,有多个不同的文件夹,这时使用ant来转换编码,请先想好要对哪些文件进行反编码;如果按上面的写法,将会把src目录下的所有文件夹中的所有文件进行反编码。假设,现在有com和org两个文件夹(其实是两个包),我只需要对com中的文件进行反编码,那么可以这样改写:src="${basedir}/com" dest="${basedir}/${build}/com"
其它的都不变。在cmd中进入到src路径下,输入ant,回车。可以看到如下结果:
--------------------编程问答--------------------
使用jad反编译 必须加上 -8参数,否则中文字符会变成unicode编码
示例 :jad -o -8 -r -s java -d src com/**/*.class
补充:Java , Web 开发