码迷,mamicode.com
首页 > 其他好文 > 详细

invalid byte sequence for encoding "UTF8": 0xe99d2c

时间:2014-09-26 19:06:48      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:字符集   转换   数据库   



Query failed: ERROR:  invalid byte sequence for encoding "UTF8": 0xe99d2c


原因是客户端字符集和插入内容的字符集不匹配。PostgreSQL默认不做字符集转换,如果数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK(可以看LANG环境变量确认),所以这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL发现不是UTF8编码,就报上面的错。
要想打开自动字符集转换功能,必须告诉 pg 客户端使用的字符集。这时可以设置pg客户端编码为GBK,pg就会自动做字符集转换。

下面是实验:



1
[root@hostalonetest ~]# psql -h 192.168.18.210 -Upostgres beiigang
psql.bin (9.3.5, server 9.1.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.


beiigang=# 


2
beiigang=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 beiigang   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 


3
beiigang=# show server_encoding;
 server_encoding 
-----------------
 UTF8
(1 row)


4
beiigang=# show client_encoding;
 client_encoding 
-----------------
 UTF8
(1 row)


5
beiigang=# create table tb_tt (id int, ctnr varchar(60));
CREATE TABLE


6
beiigang=# insert into tb_tt(id,ctnr) values(1,‘新華網‘);
ERROR:  invalid byte sequence for encoding "UTF8": 0xd0c2


7
beiigang=# \encoding GBK


8
beiigang=# show client_encoding;
 client_encoding 
-----------------
 GBK
(1 row)


9
beiigang=# insert into tb_tt(id,ctnr) values(1,‘新華網‘);
INSERT 0 1


10
beiigang=# select * from tb_tt;
 id |  ctnr  
----+--------
  1 | 新華網
(1 row)


11
beiigang=# show client_encoding;
 client_encoding 
-----------------
 GBK
(1 row)


beiigang=# 
beiigang=# reset client_encoding;
RESET
beiigang=# show client_encoding;
 client_encoding 
-----------------
 UTF8
(1 row)


写代码时可以根据情况在建立数据库链接时指定客户端字符集编码

参考:

http://www.postgresql.org/docs/9.3/interactive/multibyte.html




----------------- 

转载请著明出处:
blog.csdn.net/beiigang

invalid byte sequence for encoding "UTF8": 0xe99d2c

标签:字符集   转换   数据库   

原文地址:http://blog.csdn.net/beiigang/article/details/39582583

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!