java導出dbf文件生僻漢字處理

java導出數據到dbf文件,如果姓名中有生僻漢字,在dbf中看到的很可能是?號。

遇到這種情況需查對GBK的生僻漢字的Unicode表,GBK提及的52個生僻漢字有兩種Unicode。例如:龑(yan 3) \u4ADE就不能在dbf中正常顯示是?,如果換成\uE863則可以(可以打開word的插入->符號->其他符號,在字符代碼中輸入4ADE的到字符插入word,輸入E863的到另一形式插入word,將這兩種形式的字符從word拷貝到Visual Fox Pro的命令窗口可以看到差別,一個變成?一個能正常顯示)。

 

解決方式:

1.建立52個生僻漢字的unicode映射Map

2.將生僻漢字轉成unicode形式(有可能是將整個姓名轉成unicode)

3.將姓名的unicode形式進行分割(\u)生成數組(注意兩端的雙引號)

4.遍歷unicode數組,如果找到生僻漢字的unicode則進行替換

5.將unicode還原成漢字

6.寫入dbf

漢字轉unicode可利用(import com.alibaba.fastjson.JSON) :

    //unicode轉中文
    public static String unicodeToString(String str) {  
        return String.valueOf(JSON.parse(str));
    }
    
    //中文字符轉unicode
    public static String stringToUnicode(String s) {  
        return JSON.toJSONString(s, SerializerFeature.BrowserCompatible);
    }

 

其他說明:

例如:龑在mysql中能顯示出來,導出到dbf中時如果選擇字符集爲GB2312或GBK,導出的龑爲?。
          在Visual Fox Pro 9的命令窗口裏輸入的龑爲?,
          打開word,插入,輸入字符編碼4DAE得到龑,插入到word,複製粘貼到Visual Fox Pro 9的命令窗口改字顯示爲?
          打開word,插入,輸入字符編碼8E63得到 ,有些版本的Word能顯示出來,有些版本的不能顯示,按Alt+X,插入到word,複製粘貼到Visual Fox Pro 9的命令窗口改字能顯示正常
 
上圖輸入E863無反應
 
按快捷鍵Alt+x後的效果

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章