解决Multibyte character error一例(续2)

| 1 Comment | No TrackBacks

在"解决Multibyte character error一例"和"解决Multibyte character error一例(续)"这两篇文章里,我们最后用到的解决方法是:

NLS_LANG设成AMERICAN_AMERICA.WE8ISO8859P1,目的就是告诉oracle我这里A5不是ANSI编码,WE8ISO8859P1A5,你帮我在WE8ISO8859P1ZHS16GBK之间做一个转换吧。并且我们可以看到,当用了上述方法发生了字符转换后oracle实际上是把A5转成了A3A4

 

现在我们用Locale Builder来验证一下上述结论。

Locale Builderoracle提供的查看字符的字符集编码的工具。

这个工具在9iR210gR2里的位置不一样。

windows10gR2下,路径在E:\oracle\product\10.2.0\db_1\nls\lbuilder,这里我的$ORACLE_HOMEE:\oracle\product\10.2.0\db_1

unix10gR2下,路径是在$ORACLE_HOME/nls/lbuilder

unix9iR2下,路径是在$ORACLE_HOME/ocommon/nls/lbuilder

 

以我所在的aix-64为例,在10.2.0.1里执行Locale Builder的时候会报错:

$ ./lbuilder

/u01/app/oracle/product/10.2.0/jre/1.4.2/bin/java[3]: /u01/app/oracle/product/10.2.0/jre/1.4.2/bin/java.bin: 0403-006 Execute permission denied.

解决方法就是按提示把可执行权限加上就可以了。

 

注意,在10.2.0.4里同样执行Locale Builder,就不会报上述错误。

 

我们现在用Locale Builderwindows上来看一下WE8ISO8859P1ZHS16GBK里到底有没有A5,如果有,A5代表什么?以及ZHS16GBKA3A4表示什么?

 

1、观察WE8ISO8859P1里有没有A5,如果有,那A5表示什么?

 

  0xa5-WE8ISO8859P1-resize.jpg 

 

2、观察ZHS16GBK里有没有A5

  0xa5-ZHS16GBK-resize.jpg 

 

 

3、观察ZHS16GBKA3A4表示什么?

  0xa3a4-ZHS16GBK-resize.jpg 

 

我们从结果里可以一目了然的看到,我们观察到的结果完全符合我们之前的结论!

No TrackBacks

TrackBack URL: http://dbsnake.com/cgi-bin/mt/mt-tb.cgi/27

1 Comment

Leave a comment