,以為可指定charset,所以一直都在
new String(byte[], charset)上面打轉。
後來把Java Tutorial裡面相關的i18n的章節又看了一次,才發現原來問題出在input/output stream。只要把系統的出入口搞定了,內部的String表現全部都是unicode,也就不存在charset轉換的問題了。這下子也一併解決了BlueStone+Dom4j原本不能處理按鈕使用UTF-8的問題了。
目前只剩下一個問題,也就是DOM DocumentBuilder利用ByteArrayInputStream讀入一個ByteArray的時候,這個ByteArray如果先利用 getBytes("UTF-8")把非法的UTF-8 character 拿掉的話,就不容易發生SAXException。但是如果僅使用getBytes的話,可能因為docString裡面含有非法的UTF-8字元,造成client death。我認為的解法應該是把document好好重建一次,這樣對於整體程式碼來說,是比較健康的。
沒有留言:
張貼留言