由於sdo使用的xml解析器libxml2對中文字元存在編碼轉換問題,所以通過xml檔案或字串反序列化建立的sdo物件中的屬性中如果有中文就會顯示為亂碼。而且向反序列化方法傳遞的引數的形式也可能使得sdo物件建立失敗。詳見《tuscany sdo中的bug》
解決此問題的一種方法是在輸出時帶有中文的內容時首先對其進行格式轉換然後再輸出,可以使用iconv提供的api進行utf-8和gb2312之間的編碼轉換。iconv庫api的使用見《libxml2中的中文問題的解決》
另一種方式是修改sdo,在構造sdo物件時,就對其進行格式轉換,但這種方式在直接將sdo物件寫入檔案或資料庫時有可能面臨新的問題。
需要注意的是,從xml字串或xml檔案構造sdo時,編碼必須是utf-8,因為libxml2預設的編碼方式就是utf-8,否則會構造不成功。這裡的編碼方式不僅僅是指xml檔案頭部的encoding = "utf-8", 而是需要使用支援utf-8編碼格式的編輯器進行編輯(如altova xmlspy、ultra edit32),直接使用txt編輯的中文不是utf-8編碼的。
另外由於從檔案和xml構造sdo物件的實現方式不同,需要xml檔案的頭部必須是encoding = "utf-8" ,而字串寫成encoding = "utf-8" 或"gb2312",甚至沒有xml頭都是可以的。
PHP中json encode中文編碼的問題
php的json擴充套件自帶的json encode函式,如果對含有中文的字元進行編碼時,會自動轉換成unicode編碼。a array city 北京 abcd天津 echo json encode a n debian test server home php php test1.php 現在有...
PHP中json encode中文編碼的問題 學習
由於php的json擴充套件自帶的函式json encode會將漢字轉換成unicode碼 所以我們在這裡用自定義的json encode,這個函式不會將漢字轉換為unicode碼 public function customjsonencode a false if is string a els...
Qt中translate tr關係 與中文問題
題外話 何時使用 tr 注意哦,如果你正在用tr包裹中文字元,卻不屬於 2b 那麼,這是個訊號 如果你確實屬於 2b 請做好心理準備,你可能還會遇到很多困難,請考慮qt國際化 原始碼含中文時 的點滴分析 tr 是做什麼的?下面二者的區別是什麼?qstring text1 qobject tr hel...