因字符集原因无法正常显示中文
原因是客户端字符集和插入内容的字符集不匹配。PostgreSQL默认不做字符集转换,如果数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK(可以看LANG环境变量确认),所以这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL发现不是UTF8编码,就报上面的错。
要想打开自动字符集转换功能,必须告诉 pg 客户端使用的字符集。这时可以设置pg客户端编码为GBK,pg就会自动做字符集转换。
方法一:
打开CRT中的会话选项:在外观的选项中调整字符编码为“UTF-8”即可。
方法二: (enconding:编码;字符编码)
postgres=# show server_encoding;
server_encoding
-----------------
UTF8
(1 row)
postgres=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
postgres=# \encoding GBK
postgres=# show client_encoding;
client_encoding
-----------------
GBK
(1 row)
postgres=# select * from student;
no | student_name | age
----+--------------+-----
2 | 李四 | 13
1 | 张三 | 15
(2 rows)
postgres=# reset client_encoding;
RESET
postgres=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
postgres=# select * from student;
no | student_name | age
----+--------------+-----
2 | 鏉庡洓 | 13
1 | 寮犱笁 | 15
(2 rows)
最终正确的显示为:
postgres=# insert into student(no ,age,student_name) values(2,13,'李四');
INSERT 0 1
postgres=# select * from student;
no | student_name | age
----+--------------+-----
2 | 李四 | 13
(1 row)
postgres因字符集原因无法正常显示中文
最新推荐文章于 2024-08-05 14:00:13 发布