我将 Informix 数据库配置为:
DB_LOCALE=pl_pl.CP1250
(使用 Windows CP1250 字符编码的波兰语区域设置)。
在这个数据库中有一个表,VARCHAR
其中大部分数据以 CP1250 编码,但一些记录以 UTF-8 编码。我怀疑它们是由 ODBC 插入并错误编码的 .csv 导入。
当我使用 ODBC 时,可以获取此错误编码的数据。它看起来不漂亮:
nazw:┼?UKASIK
但可以显示并且最终用户可以编辑此类数据。那些“奇怪”的字符是 'Ł' 字母的 UTF-8 字符。
当我使用本机 JDBC 驱动程序时,我无法获取此类数据。而不是String
我得到异常:
JDBC Error: -79783
IX000
Kodowanie lub zestaw kodów znaków nie są obsługiwane.
英文解释:
-79783 Encoding or code set not supported
Explanation: The encoding or code set entered in the DB_LOCALE or CLIENT_LOCALE variable is not valid.
我在 Jython 中创建了使用本地 JDBC 驱动程序和 JDBC-ODBC 桥连接到数据库的测试程序。我只有本机驱动程序才有例外。我还尝试通过其他 JDBC getXXX() 方法来获取这些数据,byte[]
但Stream
它们也引发了异常。我使用 JDBC URL 作为:
jdbc:informix-sqli://test-informix:9088/test:informixserver=ol_testifx;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250
服务器版本:IBM Informix Dynamic Server Version 11.50.FC4
原生驱动:3.70.JC5DE; major: 3; minor: 70
JDBC-ODBC 桥使用的 ODBC 驱动程序:2.0001 (3.70.TC5DE); major: 2; minor: 1
我的问题是:
有没有办法得到这种错误编码的数据?我想看看 '?' 字符而不是错误编码的字符。我不想要例外,因为它们不允许最终用户查看和纠正错误编码的数据。