暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

MOGDB/openGauss与PostgreSQL关于GBK字符集问题

原创 阎书利 2021-12-21
1229


最近,在验证不同字符集数据类型存储数据位数的时候发现:
PG12不支持server_encoding=GBK。以及MOGDB/openGauss 2.0.1 build d97c0e8a支持 server_encoding=GBK。

测试过程一开始以为MOGDB/openGauss对于server_encoding=GBK的支持有问题,但之前的文章有读者看完后给予了我反馈和纠正,经过我进一步测试,发现确实是我的疏忽,忽视了输入终端的字符集,在这里对给予反馈的朋友表示感谢。同时也告诉我对于技术需要严谨。

下边的文章进行了部分补充以及纠正:

开始的时候是想验证一下PostgreSQL里不同字符集 varchar varying(5)是不是都能存五个汉字,因此进行了如下测试,
image.png

image.png

image.png

UTF-8字符集时候varchar不加括号的话可插入的值就是变长的

在测试GBK字符集的时候,发现PostgreSQL是不支持server_encoding=GBK的,如下是PG12的官方文档

image.png

然后想到了MOGDB/openGauss这边,虽然MOGDB/openGauss据说是基于PG九点几为基础研发的,但平时使用的时候就发现了他在一些方面做了优化,弥补了PG本身的不足,又进行了如下的测试,

image.png

上边这个报错,可以看到 server_encoding,client_encoding都是GBK的。但是为什么插入还报错了呢,其实是我忽视了输入终端的字符集,例如xshell,crt等等本身也有终端的输入字符集。
image.png

文本编码修改为GBK后进行相同测试,发现数据正常插入进去了,果然是输入终端的字符集原因导致的。
image.png
image.png

image.png

字符集涉及到三个因素 ,数据库服务端、数据库客户端、输入终端(包括文件)。这里一时的疏忽忘记了终端的字符集,导致测试结果大相径庭,在此再此表示抱歉。

最后修改时间:2023-06-26 17:00:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论