作者qrtt1 (有些事,有時候。。。)
看板java
標題Re: [問題] 請問有關重新編譯JAR檔?
時間Tue Jun 8 10:53:15 2021
※ 引述《neo12114 (Neo)》之銘言:
: (補上檔案連結(MEGA))
: https://tinyurl.com/9p5buzfc
: 《補上原始碼(就是上面的檔案用JD-GUI解出來的壓縮包)》
: https://tinyurl.com/fcx7tra7
: 各位好,我手上有一個JAR包
: 這個檔案會去讀取別的檔案的文字資料並且修改
: 但是原本寫的人應該使用的是ASCII去寫
: 導致我要讀取中文的檔案的時候會顯示亂碼
: (若是英文的檔案就不會)
: 我嘗試使用jd-gui去獲取這個JAR包的原始碼
: 但是我在CMD下命令將.JAVA重新編譯成CLASS的時候會報錯
: 由於對JAVA非常的不熟悉
: 載了ECLIPSE也不太懂要怎麼作
: 想要請教一下,是否有人可以提供幫助,或者簡單的提點一下
: 如果還需要甚麼資訊,請告訴我,或者也可以站內給我
: 感謝各位。
: ---
: 錯誤大概會像這樣一整排,但不懂是甚麼原因
: Controller.java:619: error: -> expected
: /* */ filteredData.setPredicate(());
: ^
: ---
/* */ private static String getString(int cArraySize, DataInputStream in) throws IOException {
/* 247 */ String buffer = "";
/* 248 */ for (int j = 0; j < cArraySize; j++) {
/* 249 */ buffer = buffer + (char)in.read();
/* */ }
/* 251 */ return buffer;
/* */ }
在 String 處理相關的實作,只有單純讀資料 (DataInputStream) 。
他並沒有任何需要轉換 encoding 的需求,
如果你看到的是亂碼,那原始資料應該就是壞的。
但在 Java 內的 encoding 應該是一致的 unicode
(JVM 用 utf-16,存檔時用 utf-8)
想不通為何會變亂碼。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.44.149 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1623120798.A.B42.html
1F:→ Chikei: 因為read()一次讀一個byte被強制轉型成char 06/08 15:49
合理!
※ 編輯: qrtt1 (36.227.44.149 臺灣), 06/09/2021 12:43:43
2F:→ ssccg: 這段程式只有在原資料是single byte encoding才會對 06/09 23:25
3F:→ qrtt1: 那就是程式的 bug 了,他要整組 byte array 餵 String.才行 06/10 02:01