?
最近,在驗(yàn)證不同字符集數(shù)據(jù)類型存儲數(shù)據(jù)位數(shù)的時(shí)候發(fā)現(xiàn):
PG12不支持server_encoding=GBK。以及MOGDB/openGauss 2.0.1 build d97c0e8a支持 server_encoding=GBK。
測試過程一開始以為MOGDB/openGauss對于server_encoding=GBK的支持有問題,但之前的文章有讀者看完后給予了我反饋和糾正,經(jīng)過我進(jìn)一步測試,發(fā)現(xiàn)確實(shí)是我的疏忽,忽視了輸入終端的字符集,在這里對給予反饋的朋友表示感謝。同時(shí)也告訴我對于技術(shù)需要嚴(yán)謹(jǐn)。
下邊的文章進(jìn)行了部分補(bǔ)充以及糾正:
開始的時(shí)候是想驗(yàn)證一下PostgreSQL里不同字符集 varchar varying(5)是不是都能存五個(gè)漢字,因此進(jìn)行了如下測試,



UTF-8字符集時(shí)候varchar不加括號的話可插入的值就是變長的
在測試GBK字符集的時(shí)候,發(fā)現(xiàn)PostgreSQL是不支持server_encoding=GBK的,如下是PG12的官方文檔

然后想到了MOGDB/openGauss這邊,雖然MOGDB/openGauss據(jù)說是基于PG九點(diǎn)幾為基礎(chǔ)研發(fā)的,但平時(shí)使用的時(shí)候就發(fā)現(xiàn)了他在一些方面做了優(yōu)化,彌補(bǔ)了PG本身的不足,又進(jìn)行了如下的測試,

上邊這個(gè)報(bào)錯(cuò),可以看到 server_encoding,client_encoding都是GBK的。但是為什么插入還報(bào)錯(cuò)了呢,其實(shí)是我忽視了輸入終端的字符集,例如xshell,crt等等本身也有終端的輸入字符集。

文本編碼修改為GBK后進(jìn)行相同測試,發(fā)現(xiàn)數(shù)據(jù)正常插入進(jìn)去了,果然是輸入終端的字符集原因?qū)е碌摹?br />



字符集涉及到三個(gè)因素 ,數(shù)據(jù)庫服務(wù)端、數(shù)據(jù)庫客戶端、輸入終端(包括文件)。這里一時(shí)的疏忽忘記了終端的字符集,導(dǎo)致測試結(jié)果大相徑庭,在此再此表示抱歉。
?




