当数据库的字符集为US7ASCII, WE8DEC, WE8ISO8859P1及WE8MSWIN1252等单字节的字符集时, 使用JDBC时总发现不能准确地处理中文字符, 这个问题几年前就困扰着我, 一直也没有解决的办法. 以前遇到这些数据库的字符集时, 总是将$JAVA_HOME\lib目录下的charsets.jar移走来解决, 但是这样并不能解决CLOB中的中文字符问题. 昨天coolyl又问了这个同样的问题, 我在试验时发现JRE 1.6版本和JRE 1.4版本有所区别, 通过用-Dfile.encoding=ISO-8859-1的命令行选项, 在1.6下可以成功显示汉字, 而1.4下面同样的方法却不行.
c:\jdk\sun160\bin\java -Dfile.encoding=ISO-8859-1 -jar jlib\oasql.jar
c:\jdk\sun142\bin\java -Dfile.encoding=ISO-8859-1 -jar jlib\oasql.jar
使用1.6版本的JRE时, 情况如下:
ASQL> select * from nls_database_parameters
2 where parameter='NLS_CHARACTERSET';
PARAMETER VALUE
---------------- ------------
NLS_CHARACTERSET WE8ISO8859P1
1 rows returned.
ASQL> SELECT '中国' as COL1 FROM DUAL;
COL1
----
中国
1 rows returned.
而使用1.4版本的JRE时, 情况如下:
ASQL> SELECT '中国' as COL1 FROM DUAL;
COL1
----
-?
1 rows returned.
以上测试在Windows的Command窗口中测试, 机器的Locale为中国, 不知道其他的同行或Java的开发人员有什么好的建议?
留言 (1)
也想知道呀.
现在我已经蠢到, 在 SQL*Plus 里面输入不了中文,英文Windows XP.
请给点提示.
Posted by 木匠 Charlie | Apr 27, 2007 1:53 AM