Oracle数据库中保存 NVARCHAR2 类型数据乱码问题处理

Jxstar-Cloud 2.2.5 版本因需要保存 越南文,把相关字段改成 nvarchar2 类型后,直接在PLSQL工具执行SQL:
 
update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'
 
再查询此字段数据,数据显示正确。但在 Eclipse 环境或者 Tomcat 环境执行上面的SQL,保存的就是乱码,代码示列如下:
 
	public static void test2() {
String sql = "update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
_dao.update(param);
}

Eclipse 环境中显示的提示信息都能正确显示,后来改进为预编译模式,执行正确:
	public static void test2() {
String sql = "update funall_text set prop_value_t3 = ? where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
param.addNStringValue("Đã gửi thành công");
_dao.update(param);
}

不过 Jxstar自带的 ojdbc5-1.0.jar 要升级到 ojdbc6-1.0.jar , commons-dbcp-1.3.jar 要升级到 commons-dbcp-1.4.jar 否则不支持 param.addNStringValue 方式传递参数。
 
以上问题解决花费 6个小时,看来还是老啦,解决问题的速度慢了很多!
 
由于业务数据也需要存储越南文,还包括缅甸文、高棉文等,则需要把数据库字符集类型改为 UTF-8,才行,否则所有 varchar2 类型都需要改为 nvarchar2 影响太大。
 
 

0 个评论

要回复文章请先登录注册