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);
}
其他說明: