在"解决Multibyte character error一例"和"解决Multibyte character error一例(续)"这两篇文章里,我们最后用到的解决方法是:
将NLS_LANG设成AMERICAN_AMERICA.WE8ISO8859P1,目的就是告诉oracle我这里A5不是ANSI编码,WE8ISO8859P1有A5,你帮我在WE8ISO8859P1和ZHS16GBK之间做一个转换吧。并且我们可以看到,当用了上述方法发生了字符转换后,oracle实际上是把A5转成了A3A4。
现在我们用Locale Builder来验证一下上述结论。
Locale Builder是oracle提供的查看字符的字符集编码的工具。
这个工具在9iR2和10gR2里的位置不一样。
在windows的10gR2下,路径在E:\oracle\product\
在unix的10gR2下,路径是在$ORACLE_HOME/nls/lbuilder
在unix的9iR2下,路径是在$ORACLE_HOME/ocommon/nls/lbuilder。
以我所在的aix-64为例,在
$ ./lbuilder
/u01/app/oracle/product/
解决方法就是按提示把可执行权限加上就可以了。
注意,在
我们现在用Locale Builder在windows上来看一下WE8ISO8859P1和ZHS16GBK里到底有没有A5,如果有,A5代表什么?以及ZHS16GBK里A3A4表示什么?
1、观察WE8ISO8859P1里有没有A5,如果有,那A5表示什么?
2、观察ZHS16GBK里有没有A5?
3、观察ZHS16GBK里A
Good