A. 我反编译java文件,有一些汉字信息就变成了\u9879 了
使用 jdk 自带的 native2ascii.exe 工具,在你的 jdk文件夹/bin 下能找到。
针对你的问题,在 cmd 窗口中执行下面的命令即可(需要将 jdk文件夹/bin 加入到 path 环境变量中):
native2ascii -reverse C:\abc.java c:\abc2.java
(这里abc.java表示你的含有 \uxxxx 字符的java文件;
c:\abc2.java 表示转后后的文件)
下面附上完整的 使用方法:
------------------------------
native2ascii用法解析
native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如
*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,
原因在于程序的国际化。
Java 编译器和其它 Java 工具只能处理含有 Latin-1 和/或 Unicode 编码(\udddd 记
号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和/或
Unicode 编码字符的文件。
若省略 outputfile,则使用标准输出设备输出。此外,如果也省略 inputfile,则使用
标准输入设备输入。
用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]
-[options]:表示命令开关,有两个选项可供选择
-reverse:
执行相反的操作:将含 Latin-1 和/或 Unicode 编码字符的文件转换成含本地编码字符
的文件,不指定编码情况下,将转为本地编码。
-encoding encoding_name
指定转换过程使用的编码名称。缺省的编码从系统属性 file.encoding 中得到。
encoding_name 字符串必须是下表第一栏所示的字符串。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台
-------------------------------------------------------------
8859_1 ISO 8859-1
8859_2 ISO 8859-2
8859_3 ISO 8859-3
8859_4 ISO 8859-4
8859_5 ISO 8859-5
8859_6 ISO 8859-6
8859_7 ISO 8859-7
8859_8 ISO 8859-8
8859_9 ISO 8859-9
Big5 Big5 码,繁体中文
CNS11643 CNS 11643,繁体中文
Cp037 美国、加拿大(两种语言,法语)、荷兰、葡萄牙、巴西、澳大利亚
Cp1006 IBM AIX 巴基斯坦(乌尔都语)
Cp1025 IBM 多语种西里尔语:保加利亚、波斯尼亚 黑塞哥维那、马其顿 (FYR)
Cp1026 IBM Latin-5,土耳其
Cp1046 IBM Open Edition US EBCDIC
Cp1097 IBM 伊朗(波斯语)/波斯
Cp1098 IBM 伊朗(波斯语)/波斯 (PC)
Cp1112 IBM 拉脱维亚,立陶宛
Cp1122 IBM 爱沙尼亚
Cp1123 IBM 乌克兰
Cp1124 IBM AIX 乌克兰
Cp1125 IBM 乌克兰 (PC)
Cp1250 Windows 东欧
Cp1251 Windows 斯拉夫语
Cp1252 Windows Latin-1
Cp1253 Windows 希腊
Cp1254 Windows 土耳其
Cp1255 Windows 希伯莱
Cp1256 Windows 阿拉伯
Cp1257 Windows 波罗的语
Cp1258 Windows 越南语
Cp1381 IBM OS/2, DOS 中华人民共和国 (PRC)
Cp1383 IBM AIX 中华人民共和国 (PRC)
Cp273 IBM 奥地利、德国
Cp277 IBM 丹麦、挪威
Cp278 IBM 芬兰、瑞典
Cp280 IBM 意大利
Cp284 IBM 加泰罗尼亚语/西班牙、拉丁美洲西班牙语
Cp285 IBM 英国、爱尔兰
Cp297 IBM 法国
Cp33722 IBM-eucJP - 日语 (5050 的超集)
Cp420 IBM 阿拉伯
Cp424 IBM 希伯莱
Cp437 MS-DOS 美国、澳大利亚、新西兰、南非
Cp500 EBCDIC 500V1
Cp737 PC 希腊
Cp775 PC 波罗的语
Cp838 IBM 泰国扩展 SBCS
Cp850 MS-DOS Latin-1
Cp852 MS-DOS Latin-2
Cp855 IBM 斯拉夫语
Cp857 IBM 土耳其语
Cp860 MS-DOS 葡萄牙语
Cp861 MS-DOS 冰岛语
Cp862 PC 希伯莱
Cp863 MS-DOS 加拿大法语
Cp864 PC 阿拉伯语
Cp865 MS-DOS 日尔曼语
Cp866 MS-DOS 俄语
Cp868 MS-DOS 巴基斯坦语
Cp869 IBM 现代希腊语
Cp870 IBM 多语种 Latin-2
Cp871 IBM 冰岛语
Cp874 IBM 泰国语
Cp875 IBM 希腊语
Cp918 IBM 巴基斯坦(乌尔都语)
Cp921 IBM 拉脱维亚、立陶宛(AIX, DOS)
Cp922 IBM 爱沙尼亚 (AIX, DOS)
Cp930 与 4370 UDC 混合的日语,5026 的超集
Cp933 与 1880 UDC 混合的韩文,5029 的超集
Cp935 与 1880 UDC 混合的简体中文主机,5031 的超集
Cp937 与 6204 UDC 混合的繁体中文,5033 的超集
Cp939 与 4370 UDC 混合的日语拉丁字母,5035 的超集
Cp942 日语 (OS/2),932 的超集
Cp948 OS/2 中文(台湾),938 超集
Cp949 PC 韩文
Cp950 PC 中文(香港、台湾)
Cp964 AIX 中文(台湾)
Cp970 AIX 韩文
EUCJIS JIS, EUC 编码、日语
GB2312 GB2312, EUC 编码、简体中文
GBK GBK, 简体中文
ISO2022CN ISO 2022 CN, 中文
ISO2022CN_CNS ISO-2022-CN 形式的 CNS 11643,繁体中文
ISO2022CN_GB ISO-2022-CN 形式的 GB 2312,简体中文
ISO2022KR ISO 2022 KR, 韩文
JIS JIS, 日语
JIS0208 JIS 0208, 日语
KOI8_R KOI8-R, 俄语
KSC5601 KS C 5601, 韩文
MS874 Windows 泰国语
MacArabic Macintosh 阿拉伯语
MacCentralEurope Macintosh Latin-2
MacCroatian Macintosh 克罗地亚语
MacCyrillic Macintosh 斯拉夫语
MacDingbat Macintosh Dingbat
MacGreek Macintosh 希腊语
MacHebrew Macintosh 希伯莱语
MacIceland Macintosh 冰岛语
MacRoman Macintosh 罗马语
MacRomania Macintosh 罗马尼亚语
MacSymbol Macintosh 符号
MacThai Macintosh 泰国语
MacTurkish Macintosh 土耳其语
MacUkraine Macintosh 乌克兰语
SJIS Shift-JIS, 日语
UTF8 UTF-8
B. Java编码时输入汉字出现乱码解决方法
java文件读取的时候有中文就很出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");进行下强制转换后在进行读取即可。
备注:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。
C. 我用java反编译工具把.class文件转为.java文件,其中有些这种字符,请问一下这种是怎么回事啊
不会! if ((l3 = (System.currentTimeMillis() - l2) + 10L) < 62L)
try
{
Thread.sleep(62L - l3);
}
catch (Exception )
} while (true);
if (a_byte == 1)
b();
a_Bobby.notifyDestroyed();
}
private final void d()
{
byte abyte0[] = a();
boolean flag = false;
String s1 = "BC5Data";
a a1 = this;
try
{
RecordStore recordstore;
(recordstore = RecordStore.openRecordStore(s1, false)).setRecord(1, abyte0, 0, abyte0.length);
recordstore.closeRecordStore();
return;
}
catch (Exception )
try
{
RecordStore.deleteRecordStore(s1);
}
catch (Exception )
······
看到了吧~这就是格式!汇编语言!!!
编译连接之后,再用txt打开~就只能看到乱码啦。
D. Java编程运行时出现非法字符怎么破求大神指点
修改下你.java源码文件的编码类型,如果你是用windows记事本写的,那么他是ANSI编码的,改成uttf8或者unicode编码就好了
E. java中文乱码,能说下string.getBytes()和new String()转码是,具体点。
1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")
上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1。
2、而通过【new String(byte[], decode)】的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1")。
因此,通过【String.getBytes(String decode)】方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原。
(5)java代码反编译后出现特殊字符扩展阅读
java中文编码避免乱码
1、为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,比如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式:
String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
来得到正确的中文汉字。这样就既保证了遵守协 议规定、也支持中文。
3、String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode ,not decode,从字符串到字节数组是编码的过程,从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程。
F. JAVA缂栬疟镞舵彁绀哄嚭鐜伴潪娉曞瓧绗
宸ュ叿/𨱒愭枡锛氱数鑴戙丒ditPlus杞浠
1銆侀栧厛鍦‥ditPlus凿滃崟镙忔垒鍒帮细銆愬伐鍏枫>銆愰栭夐”銆戯纴镣瑰嚮钖庯纴镓揿紑棣栭夐”绐楀彛銆