ZHS16GBK字符集插入中文时报错ORA-01756

ZHS16GBK字符集插入中文时报错ORA-01756插入数据时遇到一个奇怪的问题 插入中文报错 ORA 01756 quoted string not properly terminated 简单的复现测试如下 查看客户端及数据库字符集 可以看到字符集是一样的 如果不同 设置客户端字符集与数据库端相同再测试 export NLS LANG

大家好,我是讯享网,很高兴认识大家。

插入数据时遇到一个奇怪的问题,插入中文报错ORA-01756: quoted string not properly terminated

简单的复现测试如下:


讯享网

查看客户端及数据库字符集

可以看到字符集是一样的,如果不同,设置客户端字符集与数据库端相同再测试

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

讯享网

找了网上好多文章都是说设置客户端字符集与数据库端相同就ok,但我们的还是有问题。

最后发现是secureCRT客户端字符集的问题,设置是UTF-8,导致ZHS16GBK无法识别。

需要调整secureCRT客户端字符集为gb2312

从别的客户端查询

 

补充一种网上看到的错误做法

文章的建议是设置客户端字符集为 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

经过测试这样插入时不会报错(因为AL32UTF8能识别到secureCRT客户端字符集UTF8),在插入的客户端查询数据也正常,但是通过别的字符集为ZHS16GBK的客户端来查就会出现乱码(例如???)。

其实dump数据时也遇到过ZHS16GBK -> AL32UTF8 中文能正常显示,但是 AL32UTF8 -> ZHS16GBK 中文会变为乱码,原理是一样的。

这只会导致问题更加难以发现,后期排查处理更麻烦。

小讯
上一篇 2025-02-10 07:04
下一篇 2025-02-08 16:24

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36800.html