作者hagai0407 (阿丐哦哪個丐)
看板java
標題[問題] 編碼轉換問題(BIG5轉UTF8)
時間Sat Jan 14 13:19:01 2017
各位前輩午安,最近在製作專案時遇到編碼轉換問題...
詳情如下:
本身的servlet要呼叫一支API,而該api會回傳xml格式字串,
但對方API的系統編碼是BIG5,而我的系統是UTF8......
不知道是不是因為這個原因導致回傳字串的中文部分變成很多菱形的亂碼,
爬文結果多半與getByte function有關,
但試了相關的語法只讓菱形變成問號而已。
請問各位大大能否提供類似問題的解法? 感激不盡QQQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.56.101
※ 文章網址: https://www.ptt.cc/bbs/java/M.1484371143.A.F40.html
推 icydream: 在讀對方資料時 先用big5,接著再用utf8來編碼 01/14 14:58
→ ssccg: String是沒有編碼的(先不管怎麼存在記憶體的),重點要放在 01/14 15:45
→ ssccg: binary資料的編碼,對方系統編碼是BIG5,代表的是對方傳出 01/14 15:45
→ ssccg: 時是String → byte[] (BIG5編碼),所以你在收資料時,取得 01/14 15:47
→ ssccg: byte[]後直接用BIG5解碼回String就好,跟你自己的UTF-8沒關 01/14 15:47
→ ssccg: 如果是先讀byte[]再轉String就是new String時設定 01/14 15:48
→ ssccg: 如果是用Reader讀Stream,那就是設Reader的編碼 01/14 15:48
→ ssccg: 你會菱形又變問號大概是兩個編碼不懂狀況轉來轉去,不要想 01/14 15:51
→ ssccg: 太複雜... 01/14 15:53
推 LPH66: Java 處理編碼事情已經很單純了, byte[] 就是外界編碼 01/14 18:23
→ LPH66: 轉成 String 需要提供編碼, 它就會變成 Unicode 字串 01/14 18:24
→ LPH66: 要再送出去時再變回 byte[], 這裡也要再給一次編碼 01/14 18:24
→ LPH66: 至於你的系統是 UTF-8 這件事和 Java 無關 01/14 18:24