Java中保存中文异体字(生僻字)到oracle数据库乱码问题

869 阅读1分钟
1. 首先查看oracle的字符集
select * from nls_database_parameters;

将默认的字符集设置成ZHS16GBK

2. java中保存传值给sql前将中文字符转换成unicode
public static String gbEncoding(String gbString) {
   char[] utfBytes = gbString.toCharArray();
   String unicodeBytes = "";
   for (int i = 0; i < utfBytes.length; i++) {
      String hexB = Integer.toHexString(utfBytes[i]);
      if (hexB.length() <= 2) {
         hexB = "00" + hexB;
      }
      unicodeBytes = unicodeBytes + hexB;
   }
   return unicodeBytes;
}
3.sql中利用utl_raw.cast_to_nvarchar2函数将unicode转换成正常中文字符
update TEST set CHIN_CHAR = utl_raw.cast_to_nvarchar2(:chinChar) where ID = :id  
4.在根据中文字查询时,也需要采用同样的方法(2,3步)做转换