原因是没有正确设置客户端字符集。 【解决方法】: 方法一:设置postgresql的客户端编码为GBK,这时PostgreSQL就知道输入的内容是GBK编码的,这样PostgreSQL数据库会自动做字符集的转换,把其转换成UTF8编码。 方法二:直接设置终端的字符集编码为UTF8,让输入的编码直接为UTF8,而不是GBK。 【具体演示】: 设置psql客户端字符集为GBK,方法有两种,一种是在psql中输入“\encoding GBK” ,另一种是设置环境变量“export PGCLIENTENCODING=GBK”,演示如下: #psql -d dsc dsc=# insert into t values(1,'中国'); ERROR: HINT: dsc=# show client_encoding; ----------------- (1 row) dsc=# \encoding GBK dsc=# show client_encoding; ----------------- (1 row) dsc=# insert into t values(1,'中国'); INSERT 0 1 dsc=# commit; WARNING: COMMIT dsc=# select * from t; ----+------ (1 row) [postgres@dsc ~]$ export PGCLIENTENCODING=GBK [postgres@dsc ~]$ psql psql: FATAL: [postgres@dsc ~]$ psql -d dsc psql (8.4.3) Type "help" for help. dsc=# select * from t; ----+------ (1 row) dsc=# insert into t values(2,'我的中国'); INSERT 0 1 dsc=# select * from t; ----+---------- (2 rows) |
|
来自: 昵称23016082 > 《greenplum》