免费注册 查看新帖 |

Chinaunix

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

postgresql wxWidgets 连接成功,数据中文乱码求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-11 22:11 |只看该作者 |倒序浏览
OS:freebsd 6.3
postgresql 8.1
wxWidgets 2.6 使用EMACS,makefile编译一个图形界面.
连接运行成功,
但是数据显示为乱码.
wxWidgets工程中其他中文显示正常,(菜单的中文也 显示正常)
有没有哪位高手告知如何解决.
不胜感激

[ 本帖最后由 aspen_yang 于 2008-2-12 19:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-02-13 09:23 |只看该作者
数据库初始化的时候有没有这样做呢?
$ ./initdb --locale=C -E UNICODE -D ../data/
设置locale为C,并且编码为UNICODE,使数据库支持中文。

论坛徽章:
0
3 [报告]
发表于 2008-02-13 18:36 |只看该作者

回复 #2 arust 的帖子

谢,
我编了个控制台程序,在Mlterm运行,使用PSQL 去连接同样的表,输出正确,并可以正常输出中文.
这是PSQL连接的结果.
mydb=# select * from weather;
   city城市    | temp_lo低温 | temp_hi高温 | prcp |  date日期
---------------+-------------+-------------+------+------------
San Francisco |          46 |          50 | 0.25 | 1994-11-27
上海          |          46 |          50 | 0.25 | 2008-01-27
重庆          |          46 |          50 | 0.25 | 2008-02-02
青浦          |          66 |          60 | 1.25 | 2008-01-02
安亭          |          36 |          40 | 0.55 | 2005-04-07
嘉定          |          16 |          80 | 0.65 | 2007-03-07
(6 行)

下面是我的测试程序运行的结果.
$ ./pq_test
city城市       temp_lo低温    temp_hi高温    prcp           date日期

San Francisco  46             50             0.25           1994-11-27
上海           46             50             0.25           2008-01-27
重庆           46             50             0.25           2008-02-02
青浦           66             60             1.25           2008-01-02
安亭           36             40             0.55           2005-04-07
嘉定           16             80             0.65           2007-03-07


使用\l查看,有如下输出.
   名字    |    所有者     |  编码
   -----------+------------  ---+--------
   mydb      | postgres_user | EUC_CN
   postgres  | postgres_user | EUC_CN
template0 | postgres_user | EUC_CN
template1 | postgres_user | EUC_CN
使用
mydb=# \encoding
EUC_CN
说明中文支持没有问题.
程序里面使用,
PQsetClientEncoding(conn, "EUC_CN");
PQsetClientEncoding(conn, "UNICODE");
也没有用.

[ 本帖最后由 aspen_yang 于 2008-2-13 18:41 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-02-16 11:10 |只看该作者
建议全部使用 utf-8

论坛徽章:
0
5 [报告]
发表于 2008-02-16 12:12 |只看该作者

回复 #4 likuku 的帖子

谢,
我试试看。

论坛徽章:
0
6 [报告]
发表于 2008-02-17 18:30 |只看该作者

回复 #4 likuku 的帖子

不行,我重新建立了 一个UTF8的数据库。
还算不行。
在WINDOWS 2003下也试了下 ,问题一样。
晕,要疯了,通不过。

论坛徽章:
0
7 [报告]
发表于 2008-02-18 10:56 |只看该作者
编译 wxWidgets 库的时候,有没有打开这个选项呢?
UNICODE: 是否支持 unicode utf-8
如果用 Visual C++ 编译的话,有没有设置工程属性中的 Character Set 呢?
Project Properties -> General -> Character Set: Use Unicode Character Set

论坛徽章:
0
8 [报告]
发表于 2008-02-18 21:59 |只看该作者
谢谢楼上,马上修改config.重新编译一下看看。:)
但我的已安装程序里面显示如下,是不是算表示已经支持UNICODE了呢。
# pkg_info wxgtk2-unicode-2.6.3_4
Information for wxgtk2-unicode-2.6.3_4:

Comment:
The wxWidgets GUI toolkit (Unicode)


Description:
wxWidgets (formerly known as wxWindows) is a C++ GUI framework for platform
independent software development. On FreeBSD the Gtk toolkit is used.

WWW: http://www.wxwidgets.org/

看来我得安装最新的版本,显式UNICODE编译一下看看。

[ 本帖最后由 aspen_yang 于 2008-2-19 19:07 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-05-02 23:15 |只看该作者
终于解决了
原帖由 aspen_yang 于 2008-2-11 22:11 发表
OS:freebsd 6.3
postgresql 8.1
wxWidgets 2.6 使用EMACS,makefile编译一个图形界面.
连接运行成功,
但是数据显示为乱码.
wxWidgets工程中其他中文显示正常,(菜单的中文也 显示正常)
有没有哪位高手告知如 ...



把自己顶起来先,
谢谢这个帖提示,谢谢作者.http://hi.baidu.com/silenceapple ... 674a1dbe09e6a6.html
在postgresql.conf 配置文件中设置变量client_encoding=GBK.需要重启服务,就OK了.
这次是在VC6下面搞的,开始也是一样的问题.找了足多资料,终于看到这个帖子.
解决了,解决了。希望别人别走弯路.

测试程序的结果如附件

111.GIF (14.29 KB, 下载次数: 79)

效果附件

效果附件

论坛徽章:
0
10 [报告]
发表于 2008-05-02 23:19 |只看该作者

回复 #1 aspen_yang 的帖子

补充一下:这次是POSTGRESQL8.3,VC6,安装时服务器编码选的UTF8,client选的GBK.
在freebsd下,或者在postgres8.2下估计也会成功的,没有试.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP