[問題] big5轉utf8

看板java作者 (HANA)時間11年前 (2014/03/24 21:15), 編輯推噓5(508)
留言13則, 4人參與, 最新討論串1/8 (看更多)
有試著爬過文,但是沒找到解法 最近要做資料傳遞 但是問題是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

03/24 22:03, , 1F
在Server端設定用Big5讀Clinet傳來的資料再轉成UTF-8 ?
03/24 22:03, 1F
試過... 但是問題出在他仍是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)

03/24 22:26, , 2F
抱歉我沒講清楚 轉成utf-8是指用Writer類別寫入目的檔案
03/24 22:26, 2F
恩.....我不知道我的方法有無錯誤 我client會先用getBytes("utf-8")轉字串 用一個物件打包序列化後傳到server 之後用BufferedWriter寫到目的地 server端有指定file.encoding為utf8,不過沒效果 我在試試不用getBytes轉去丟好了 ※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:33)

03/24 22:44, , 3F
用BufferedWriter裝飾OutputStreamWriter
03/24 22:44, 3F

03/24 22:46, , 4F
getBytes拿到的是正確的啊... 你那裏沒寫對吧
03/24 22:46, 4F
我問題沒描寫清楚 說細一點的話 我有一隻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)

03/24 22:47, , 5F
然後在OutputStreamWriter裡面指定utf-8
03/24 22:47, 5F

03/24 22:50, , 6F
另外你提到file.encoding 建議先檢查雙方預設的系統編碼
03/24 22:50, 6F

03/24 22:53, , 7F
如果你是用System.setProperty()指定file.encoding
03/24 22:53, 7F

03/24 22:55, , 8F
那無效是很正常的
03/24 22:55, 8F
設置的方式... java -Dfile.encoding=xxx .... 我想應該是沒錯....吧 也用jinfo檢查過環境變數 ※ 編輯: del680202 來自: 61.230.139.95 (03/24 22:57)

03/25 00:28, , 9F
getBytes之後為什麼不直接用OutputStream寫byte就好
03/25 00:28, 9F

03/25 00:30, , 10F
預設編碼是big5的話,你又new String(...)回去就錯了
03/25 00:30, 10F

04/07 06:43, , 11F
記的之前在網路書店有用c#寫過一支硬幹法的轉碼程式
04/07 06:43, 11F

04/07 06:45, , 12F
原理很簡單 把對照表抓下來用hash table存好後應轉..
04/07 06:45, 12F

04/07 06:49, , 13F
不過之前抓對照表的網站 "Unicode補完計畫"好像消失了Orz
04/07 06:49, 13F
文章代碼(AID): #1JC2_f2D (java)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
6
13
0
1
1
2
完整討論串 (本文為第 1 之 8 篇):
6
13
0
1
1
2
5
13
文章代碼(AID): #1JC2_f2D (java)