【YashanDB知识库】如何设置yasql客户端的字符编码

简介: 本文来自YashanDB官网,主要解决客户因客户端编码配置不当导致执行不同编码SQL文件时出现“YAS-00218 string conversion failed”错误的问题。问题影响所有版本的YashanDB,可能导致测试业务受阻。原因在于客户端与服务端编码不一致时,yasql采用类似iconv逻辑进行字符串转换。解决方法包括确认文件编码(如通过xxd或iconv工具)、正确配置\$YASDB_HOME/client/yasc_env.ini中的客户端编码,并验证设置结果。同时,终端需匹配相应编码格式以确保操作成功。

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7488293.html?templateId=1718516

问题现象

客户刚开始使用YashanDB, 对如何配置客户端的编码不熟悉, 直接执行不同编码的sql文件报错

YAS-00218 string conversion failed

问题的风险及影响

影响测试业务的开展。

问题影响的版本

YashanDB版本:所有版本

问题发生原因

1、如果客户端的编码和服务端一致,不需要做编码转换,如果客户端编码和服务端编码不一致,yasql采用类似linux命令iconv的逻辑,对字符串格式做转换。

2、客户端编码是在 \$YASDB_HOME/client/yasc_env.ini中配置,不配置linux下默认是UTF8,windows下默认是GBK

image.png

3、服务端的配置参数是由建库参数CHARACTER_SET控制,安装之后通过系统参数查看

image.png

4、通过下面的方法做排查确认,正确设置客户端编码之后,问题解决。

解决方法及规避方式

怎么确认文件的编码?

1、xxd查看十六进制编码,在线对比编码:

字符 编码/解码 - 锤子在线工具 (toolhelper.cn)

image.png

image.png

注意:file -i检查的编码存在问题,应以检查到的实际编码为准,如下图实际编码是GBK,但是file -i命令显示是ISO-8859-1

image.png

2、使用iconv转换确认

如果源编码是正确的, iconv可以转换成目标编码,如果源编码输入错误, 则转换会失败。

image.png

根据官网,配置用户客户端编码

字符集配置 | YashanDB Doc (yasdb.com)

注意:

1、客户端编码不配置, linux下默认是UTF8, windows下默认是GBK

2、yasc_env.ini编码怎么填, 参考下面表格:

SQL文件编码

yasc_env.ini对应编码

GBK

GBK

UTF-8

UTF8

ASCII

ASCII

ISO-8859-1

ISO88591

GB18030

GB18030

验证编码设置结果

使用-f执行对应的sql文件,执行成功则yasql客户端编码转换成功。

image.png

其他

终端一般需要设置自己的编码格式, 如xshell在这里设置:

image.png

vi的时候, 使用set encoding=gbk修改编码, 创建对应的验证文件。

目录
打赏
0
2
3
0
96
分享
相关文章
|
18小时前
|
SQL
【YashanDB 知识库】YAS-04115 "SELECT" expected but missing
【YashanDB 知识库】YAS-04115 "SELECT" expected but missing
|
18小时前
【YashanDB知识库】lYAS-02143 invalid username/password, login denied
【YashanDB知识库】lYAS-02143 invalid username/password, login denied
|
18小时前
【YashanDB 知识库】YCM Monit 进程频繁误告警
【YashanDB 知识库】YCM Monit 进程频繁误告警
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
18小时前
|
SQL
【YashanDB 知识库】并发 update 报错 YAS-02208 lock conflict in consistent write
【YashanDB 知识库】并发 update 报错 YAS-02208 lock conflict in consistent write
【YashanDB 知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
【YashanDB 知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
【YashanDB 知识库】druid 连接池做断网测试,无法自动重新连接
【YashanDB 知识库】druid 连接池做断网测试,无法自动重新连接
|
18小时前
【YashanDB 知识库】进行 load data 的时候报找不到动态库 liblz4.so
【YashanDB 知识库】进行 load data 的时候报找不到动态库 liblz4.so
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
【YashanDB知识库】使用DBeaver 插入数据 nvarchar字段插入为空
|
18小时前
【YashanDB知识库】YDC无法通过conn切换用户
【YashanDB知识库】YDC无法通过conn切换用户
【YashanDB知识库】YDC无法通过conn切换用户

热门文章

最新文章