postgreSQL中获取中文乱码问题

大头猫 2012-11-12 12:14:20
我使用c的libq库连接访问数据库。
用 char *name= PQgetvalue(res, row, col);
去获取数据库的表的内容,都是是text属性的字段,里面有中文
获取到的数据是乱码。
用sql的select可以正确得到中文

请问:如何用libq取到正确的中文...
...全文
1002 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaomiaoqianran 2014-09-28
  • 打赏
  • 举报
回复
没有明白 怎么解决的呢?
大头猫 2012-11-12
  • 打赏
  • 举报
回复
PQexec(Conn_pointer, "select * from game"); 然后逐行去获取text字段的内容。 我直接在sql shell select * from game 能得到正确的中文 在程序里---获取到的却是乱码。
大头猫 2012-11-12
  • 打赏
  • 举报
回复
嗯,我在sql shell 中select到的内容是中文的。 主要是在自己写的服务器中用libqp 去读取PQgetvalue(res, row, col); 获取的的char *是乱码 我想知道如何能获取到里面的中文 参照楼上的,,并未能解决
trainee 2012-11-12
  • 打赏
  • 举报
回复 1
先运行一下set client_encoding=XXX XXX取决于你应用环境的字符码, 如果是ansi的, 应改是GBK, 如果是unicode, 应该为unicode
大头猫 2012-11-12
  • 打赏
  • 举报
回复
再次拜谢了。哥们,依照你的说法,已解决。万分感谢
iihero_ 2012-11-12
  • 打赏
  • 举报
回复
引用 3 楼 gao5214637 的回复:
我直接在sql shell select * from game 能得到正确的中文 在程序里---获取到的却是乱码。
你在shell里头得到的是中文,并不意味着是正确的。 你在shell里,执行\encoding, 看看是什么字符集, 然后 在你的代码里头,调用set client_encoding=XXX (XXX是你查询得到的\encoding的值) 这样应该能得到你想要的。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧