[爆卦]utf8轉big5是什麼?優點缺點精華區懶人包

為什麼這篇utf8轉big5鄉民發文收入到精華區:因為在utf8轉big5這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者del680202 (HANA)看板java標題[問題] big5轉utf8時間Mon Mar ...



有試著爬過文,但是沒找到解法

最近要做資料傳遞

但是問題是server端是utf-8的編碼環境

而client是big5的編碼環境

現在策略是client端統一把資料轉utf-8文字傳過去

我試著估狗,但是找到的答案都是用getBytes方式去轉

可是我實際測試了儘管用getBytes去拿到utf-8文字

他也只是假性當作utf-8,骨子裡還是big5文字

請問java有沒有實際將文字編碼轉換的套件或API

可以將big5的中文字encoding成utf8的中文字


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.139.95
virnux:在Server端設定用Big5讀Clinet傳來的資料再轉成UTF-8 ? 03/24 22:03
試過...

但是問題出在他仍是big5文字,只是用utf8打包的樣子

可能是source產生的時候就是big5的關係吧

假設utf8產生的中文byte array是aaa好了

big5產生的中文byte array是bbb,用getBytes("utf-8")轉之後會變成ccc

雖然ccc可以解回變成bbb,但是他不是aaa...

現在是想找一個方法可以把bbb變成aaa

※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:16)
virnux:抱歉我沒講清楚 轉成utf-8是指用Writer類別寫入目的檔案 03/24 22:26

恩.....我不知道我的方法有無錯誤

我client會先用getBytes("utf-8")轉字串

用一個物件打包序列化後傳到server

之後用BufferedWriter寫到目的地

server端有指定file.encoding為utf8,不過沒效果

我在試試不用getBytes轉去丟好了

※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:33)
virnux:用BufferedWriter裝飾OutputStreamWriter 03/24 22:44
danny8376:getBytes拿到的是正確的啊... 你那裏沒寫對吧 03/24 22:46

我問題沒描寫清楚

說細一點的話

我有一隻daemon會去產生檔案是big5編碼

java client會去把那個檔案用InputStream讀進來後先轉成java字串

假設是 String str = new String(inputBytes, "big5")

這時候的str在client可以正常顯示沒問題

之後要把str丟往server了,先經過一手轉換

str = new String(str.getBytes("utf-8"))

之後server接到str用Writer寫到local

不過顯示出來就如上面講的,還得經過iconv轉回big5才能正常顯示




※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:53)
virnux:然後在OutputStreamWriter裡面指定utf-8 03/24 22:47
virnux:另外你提到file.encoding 建議先檢查雙方預設的系統編碼 03/24 22:50
virnux:如果你是用System.setProperty()指定file.encoding 03/24 22:53
virnux:那無效是很正常的 03/24 22:55

設置的方式...

java -Dfile.encoding=xxx ....

我想應該是沒錯....吧

也用jinfo檢查過環境變數


※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:57)
ssccg:getBytes之後為什麼不直接用OutputStream寫byte就好 03/25 00:28
ssccg:預設編碼是big5的話,你又new String(...)回去就錯了 03/25 00:30
jinmin88:記的之前在網路書店有用c#寫過一支硬幹法的轉碼程式 04/07 06:43
jinmin88:原理很簡單 把對照表抓下來用hash table存好後應轉.. 04/07 06:45
jinmin88:不過之前抓對照表的網站 "Unicode補完計畫"好像消失了Orz 04/07 06:49

你可能也想看看

搜尋相關網站