免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9742 | 回复: 10
打印 上一主题 下一主题

Postgresql 輸入中文不能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-06 22:39 |只看该作者 |倒序浏览
環境: OSX 10.6.2 英文
下載POSTGRESQL DMG版, 用Locale= default, 及Locale=zh_TW, 兩個方法安裝過, 也輸入中文不能

d1=# SHOW client_encoding;
client_encoding
-----------------
EUC_TW

./psql -l -U postgres
Password for user postgres:
                              List of databases
   Name    |  Owner   | Encoding | Collation | Ctype |   Access privileges   
-----------+----------+----------+-----------+-------+-----------------------
d1        | postgres | UTF8     | zh_TW     | zh_TW |
d2        | postgres | UTF8     | zh_TW     | zh_TW |
postgres  | postgres | UTF8     | zh_TW     | zh_TW |
template0 | postgres | UTF8     | zh_TW     | zh_TW | =c/postgres
                                                     : postgres=CTc/postgres
template1 | postgres | UTF8     | zh_TW     | zh_TW | =c/postgres
                                                     : postgres=CTc/postgres
(5 rows)

d1=# isnert into tbl1 values ("允许你动态修改客户端编");
ERROR:  invalid byte sequence for encoding "UTF8": 0xd4ca
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

希望有高手給在下賜教.

论坛徽章:
0
2 [报告]
发表于 2010-03-18 10:56 |只看该作者
你的输入终端用的是英文?繁体?还是简体?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2010-03-18 12:05 |只看该作者
应该是CLIENT端的问题。

论坛徽章:
0
4 [报告]
发表于 2010-03-22 01:25 |只看该作者
你的输入终端用的是英文?繁体?还是简体?
joint 发表于 2010-03-18 10:56



    我愛用英文,但也轉了成繁体,也不行,太難用了。

论坛徽章:
0
5 [报告]
发表于 2010-03-22 01:28 |只看该作者
应该是CLIENT端的问题。
renxiao2003 发表于 2010-03-18 12:05



    我用同一部電腦,裝個mysql,不用什麼,裝完便記錄,查詢到中文了。
想問,同一部電腦,如何用CLIENT連?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
6 [报告]
发表于 2010-03-22 17:12 |只看该作者
就是你用SHELL的时候,看看LANG环境变量,PG和这个好像相关。有点记不住了。

论坛徽章:
0
7 [报告]
发表于 2010-03-30 15:30 |只看该作者
我建库的时候一般都把字符集设置为LATIN1

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2015-06-18 22:20:00数据库技术版块每日发帖之星
日期:2015-06-21 22:20:00数据库技术版块每日发帖之星
日期:2015-08-27 06:20:00
8 [报告]
发表于 2010-04-05 23:01 |只看该作者
需要设置psql客户端字符集为GBK,方法有两种,一种是在psql中输入“\encoding GBK” ,另一种是设置环境变量“export PGCLIENTENCODING=GBK”,看我的演示:
#psql
dsc=# insert into t values(1,'中国');
ERROR:  invalid byte sequence for encoding "UTF8": 0xd6d0
HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
dsc=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)

dsc=# \encoding GBK  
dsc=# show client_encoding;
client_encoding
-----------------
GBK
(1 row)

dsc=# insert into t values(1,'中国');
INSERT 0 1
dsc=# commit;
WARNING:  there is no transaction in progress
COMMIT
dsc=# select * from t;
id | name
----+------
  1 | 中国
(1 row)


[postgres@dsc ~]$ export PGCLIENTENCODING=GBK
[postgres@dsc ~]$ psql
psql: FATAL:  conversion between GBK and LATIN1 is not supported
[postgres@dsc ~]$ psql -d dsc
psql (8.4.3)
Type "help" for help.

dsc=# select * from t;
id | name
----+------
  1 | 中国
(1 row)

dsc=# insert into t values(2,'我的中国');
INSERT 0 1
dsc=# select * from t;                  
id |   name   
----+----------
  1 | 中国
  2 | 我的中国
(2 rows)

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2015-06-18 22:20:00数据库技术版块每日发帖之星
日期:2015-06-21 22:20:00数据库技术版块每日发帖之星
日期:2015-08-27 06:20:00
9 [报告]
发表于 2010-04-05 23:23 |只看该作者

论坛徽章:
0
10 [报告]
发表于 2010-05-05 15:49 |只看该作者
需要设置psql客户端字符集为GBK,方法有两种,一种是在psql中输入“\encoding GBK” ,另一种是设置环境变量 ...
osdba 发表于 2010-04-05 23:01


真的,
insert into cb values('我的中国');
INSERT 0 1
dm=# select * from cb;
        info         
---------------------
中国
中国
我的中国

    (8 rows)

但要用postgresql shell, 其他shell不行。

而且不可入繁體字, 可惜也。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP