当前位置:编程学习 > JAVA >>

.class文件反编译,汉字乱码问题

领导扔过来一个war文件,让我修改这个系统,没找到src,没有源文件,只能用反编译工具,把web-inf里面的.class文件反编译过来,结果发现,反编译过来的汉字全变成了
 
不知道该怎么解决了,来论坛上求教一下~ 反编译 乱码 java --------------------编程问答-------------------- 你选中项目右击选择属性里面可以设置语言比如utf-8 --------------------编程问答--------------------
引用 1 楼 Yuan_Rong_Hua 的回复:
你选中项目右击选择属性里面可以设置语言比如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,回车。可以看到如下结果:
     --------------------编程问答--------------------
引用 3 楼 longtian1213 的回复:
你用jad试试,加上 -8参数
 -8       - 将Unicode字符转换为ANSI字符串,如果输出字符串是中文的话一定要加上这个参数才能正确显示!

使用jad反编译 必须加上 -8参数,否则中文字符会变成unicode编码

示例 :jad -o -8 -r -s java -d src com/**/*.class
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,