ITPub博客

首页 > 数据库 > 国内数据库 > 【YashanDB知识库】如何设置yasql客户端的字符编码

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

原创 国内数据库 作者:崖山数据库系统YashanDB 时间:2024-12-10 14:36:55 0 删除 编辑

本文内容来自YashanDB官网,原文内容请见 如何设置yasql客户端的字符编码-YashanDB


问题现象

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

YAS-00218 string conversion failed

 

问题的风险及影响

影响测试业务的开展。

 

问题影响的版本

YashanDB版本:所有版本

 

问题发生原因

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

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

image2024-8-6_9-59-47

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

image2024-8-6_9-58-24

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

 

解决方法及规避方式

怎么确认文件的编码?

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

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

image2024-8-5_16-14-41

image2024-8-5_16-15-21

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

image2024-8-5_16-16-58

2、 使用iconv转换确认

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

[fangjingbian@k8s-24 client]$ iconv -f ISO8859-1 -t GBK test.sql -o test_gbk_iconv.sql

iconv: illegal input sequence at position 37

[fangjingbian@k8s-24 client]$ iconv -f GBK -t UTF-8 test.sql -o test_gbk_iconv.sql

[fangjingbian@k8s-24 client]$ file -i test_gbk_iconv.sql

test_gbk_iconv.sql: text/plain; charset=utf-8

 

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

字符集配置 | 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客户端编码转换成功。

image2024-8-5_16-24-24

 

其他

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

image2024-8-5_16-26-52

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3056178/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639784