看板 java 關於我們 聯絡資訊
※ 引述《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://www.ptt.cc/bbs/java/M.1623120798.A.B42.html
Chikei: 因為read()一次讀一個byte被強制轉型成char 06/08 15:49
合理! ※ 編輯: qrtt1 (36.227.44.149 臺灣), 06/09/2021 12:43:43
ssccg: 這段程式只有在原資料是single byte encoding才會對 06/09 23:25
qrtt1: 那就是程式的 bug 了,他要整組 byte array 餵 String.才行 06/10 02:01