Sql报错: Encoding or code set not supported

问题:

某用户反馈在查询数据时会有乱码出现,但是数据内容并没有特殊字符,报错信息如下图所示。

原因:

经排查发现,在DB_LOCALE=en_US.8859-1;CLIENT_LOCALE=en_US.8859-1;字符集下,使用dbeaver(JDBC)连接数据库时,会报以上错误,dbaccess不报错。在该字符集下,如果插入的数据是英文字符,会按可以存储的字节长度直接截断。如果插入的是中文字符,目前这个字符集1个汉字占3字节,如果字符串长度能被3整除就直接截断,如果不能就会报以上错误。比如存’中国人’,varchar(6)截断存’中国’,varchar(7)报以上错误。

解决办法:

  1. 在JDBC连接串中新增IFX_USE_STRENC=true;在遇到非法字符集时采用跟以前兼容的处理方式,增加对中文乱码的处理,不过在查询数据时可能就会多出一些符号,如下:

image

  1. 建议用户通过Alter table方式修改字段长度。
1 个赞