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鑿滃崟鏍忔壘鍒幫細銆愬伐鍏楓>銆愰栭夐」銆戱紝鐐瑰嚮鍚庯紝鎵撳紑棣栭夐」紿楀彛銆