连接SinoDB报编码错误的几种可能情形

报错1:


-23103 Codeset conversion function failed due to an illegal sequence orinvalid value.

通常是因为字符集转换失败引起报错。可能原因:

  • 客户端工具或应用程序安装在中文目录,需要安装到英文目录下;

  • 客户端或数据库所在主机名为中文,需要将主机名改成英文;

  • 往英文字符集的数据库插入了中文字符,这种情况需要设置DB LOCALE,CLIENT LOCALE环境变量后重建库。

报错2:


 -23197 Database locale information mismatch.

字符集不匹配引起:

  • 客户端配置的DB_LOCALE,CLIENT_LOCALE和数据库的字符集不匹配。

  • 通过select * from sysmaster:sysdbslocale;查看数据库的字符集,根据字符集对客户端进行配置,再重新连接。

  • zh CN.57372 即zh CN.utf8,zh CN.5488即zh_CN.GB18030-2000,en US.819是英文

  • jdbc通过连接串进行配置,dbaccess命令行通过环境变量DB_LOCALE,CLIENT_LOCALE进行配置;

报错3:


-23101 Unable to load localecategories

DB_LOCALE,CLIENT_LOCALE的值配置错误,程序不能识别该字符集

报错4:


java.sql.SQLException: Encoding or code set not supported

  • 不支持的编码或代码集。

  • 在jdbc连接串中添加参数 IFX_USE_STRENC=true,指示在遇到非法字符集时采用兼容的方式处理,而不是报错