最近,有现场反应,程序显示乱码。感觉很奇怪,该系统已经卖出去无数了。肯定是现场数据库字符集有问题,经过查看,
现场环境:
window系统,oracle10g。
我们要求的数据库字符集是AL32UTF8的,而现场自己安装成ZHS16GBK。
并且,数据库的表里面,中文是乱码,如???(这才是造成程序显示乱码的主要原因,后面详述)
当时一心以为:既然情况如此,只能期望通过调整数据库字符集,来解决乱码问题。虽然查阅了资料说,不建议这样做;
修改数据库服务器字符集步骤如下:
还别说,表里面原来中文是乱码的,现在还真的能正确显示了。
但系统以前中文正常显示的地方现在却是乱码,找不到问题原因。
后来,现场重新安装了数据库实例,字符集是AL32UTF8的,但通过pl/sql导入的带中文的初始脚本,
表里面还是显示乱码。最后经过查找资料,是oracle客户端字符集有问题,导致插入数据库表中文乱码。
设置window系统环境变量:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK ,问题解决。
总结:
1.问题原因没真正明白,就直接下结论。其实,在调整数据库字符集前,可能设置客户端字符集问题就可以解决了。目前已经无法验证了。
2.修改数据库服务器字符集确实不值得推荐。