最近在研究SQL语言,用的PostGreSQL平台。
进行插入语句insert时,发现有中文乱码的现象。
runoobdb=# insert into result values('张?', '语?', 81);
怎么解决这个问题呢。
首先,想到的是,PostGreSQL的服务端和客户端的编码是否有问题。
runoobdb=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
runoobdb=# show server_encoding;
server_encoding
-----------------
UTF8
(1 row)
发现客户端和服务端都是UTF8编码。
所以讲客户端改为GBK编码支持中文,操作如下:
runoobdb=# set client_encoding to 'GBK';
SET
runoobdb=# show client_encoding;
client_encoding
-----------------
GBK
(1 row)
结果依旧存在中文乱码问题。
其次,想到了,MAC终端的编码问题造成的中文乱码。
原因是locale没有设置成utf-8。
在终端下输入:
vi ~/.zshrc
在文件内容末端添加:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
让设置生效
source ~/.zshrc
最后重启终端。
最后,如果还存在中文乱码问题,启用大杀招。
打开终端,点击左上方的终端-->偏好设置-->设置-->高级-->字符编码-->中文(GBK)。
来验证一下,中文乱码问题是否解决了。
进入数据库,输入以下语句:
runoobdb=# select * from result;
name | kecheng | fenshu
------+---------+--------
张三 | 语文 | 81
(1 row)
奇迹出现了,中文乱码问题解决了。