Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3127924
  • 博文数量: 206
  • 博客积分: 3409
  • 博客等级: 中校
  • 技术积分: 4066
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 10:21
个人简介

● ITPUB名人堂嘉宾 ● ChinaUnix社区博客专家 ● ChinaUnix社区Oracle板块版主 ● 优酷网认证音乐牛人:EricGuitar ● SDOUG 核心成员 ●E-mail:gaoqiangdba@163.com

文章分类

全部博文(206)

文章存档

2021年(11)

2020年(7)

2019年(7)

2016年(5)

2015年(36)

2014年(23)

2013年(15)

2012年(23)

2011年(61)

2010年(18)

分类: Mysql/postgreSQL

2010-12-25 15:40:34

  插入数据(insert into)的时候会碰到提示“Error:invalid byte sequence for encoding "UTF8":0xd6d0”的错误。

  原因:没有正确设置终端字符集。输入中文时就会报以上错误。

       默认情况下,PostgreSQL是不转换字符集的,一般终端的中文字符集会设置成GBK,或者en_US(查看终端的字符集,可以从LANG环境变量的设置中看到。)
       一般都是GBK编码,这个编码不经转换的存入数据库,而数据库是UTF8的,PostgreSQL一看就没有这样的编码,当然报错了!


  解决方法:

      一、设置psql客户端的字符集为GBK,这时PostgreSQL知道输入的内容是GBK编码的了,这样数据库会做自动的字符集转换,转换为UTF8.

      二、直接设置终端的字符集编码为UTF8,而不是GBK。

  具体步骤:


      一、 1.show client_encoding;
          2.\encoding GBK
          3.执行步骤1,验证;
          4.export PGCLIENT ENCODING =GBK
 
      二、 1.export  LANG=zh_CN.UTF8
          2.将所使用的终端软件设置成UTF

个人倾向“方法一".
阅读(4138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~