2018年8月29日 星期三

Java zip 解壓編碼問題


前幾天有人使用Java zip解壓縮時遇到一個錯誤

java.lang.IllegalArgumentException: MALFORMED

我在幫忙google查詢問題的時候發現到他其實是因為壓縮檔裡面有中文

解壓縮的時候預設用UTF-8出錯
但是提出解法的大多是簡體中文的使用者
所以會看到以下的程式碼

Charset gbk = Charset.forName("GBK");
ZipFile zipFile = new  ZipFile(zipFileName, gbk);


事實上GBK是簡中的編碼所以用GBK去解壓還是會造成亂碼的問題
台灣BIG5的編碼你需要使用的Charset是ms950

Charset gbk = Charset.forName("ms950");
ZipFile zipFile = new  ZipFile(zipFileName, gbk);

將這個紀錄在google blog跟痞客邦上,希望有繁中的使用者遇到這個問題的時候不會找不到正確的編碼而卡住