WE8ISO8859P1字符集下,JDBC的中文支持问题

    当数据库的字符集为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.

请给点提示.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Get me my coat, please.
  • 请帮我拿下外套.
  • Make me a cup of coffee, will you?
  • 给我冲杯咖啡, 好吗?
  • Call me tomorrow if you have time.
  • 明天要有时间就给我打个电话.
  • Could you tell me where I can find these books?
  • 您能告诉我在哪儿能找到这些书吗?
  • Certainly.
  • 当然了.