数据库查询完,通过printf("%s",PQgetvalue(res,s,3));
打印出来中文都是乱码,请问如何解决
C鐩哥數鍘婾3
鐢垫祦I2
鐢垫祦I3
A鐩哥數娴
B鐩哥數娴
C鐩哥數娴

解决方案 »

  1.   

    首先确保你的数据库是gbk或者utf8字符集。
    在你获取连接得到PGconn* conn句柄之后,
    调用PQsetClientEncoding(conn, "gbk")
    这样,你取得的结果应该不会乱码。
      

  2.   

    你的数据库的字符集是什么来着?
    试着运行如下命令看看:d:\>psql iihero
    psql (8.5devel)
    Type "help" for help.iihero=# \encoding
    UTF8我这显示的是utf8,你的是多少?
      

  3.   

    出现
    密码:
    输入密码后提示
    psql:致命错误:用户admin password认证失败
    如果不输入密码直接回车
    psql:fe_sendauth:no password supplied这个是什么原因
      

  4.   

    不清楚你的命令行怎么还运行不起来。PQsetClientEncoding(conn, "gbk")
    换成"latin1"再试,估计你以前是用latin1编码插入的。呵呵。
      

  5.   

    还是一样出现乱码
    鐢垫祦I2
    鐢垫祦I3
    A鐩哥數娴
    B鐩哥數娴
    C鐩哥數娴
      

  6.   

    建议你还是先把命令行弄通再说,必须知道server端的encoding,
    另外的你的原始数据是在什么encoding下进去的,也很重要。
      

  7.   

    我看了一下
    CREATE DATABASE bravo
      WITH OWNER = postgres
           ENCODING = 'UTF8';
    是UTF8的
      

  8.   

    通过sql语句插入的
    在表里显示正常
      

  9.   

    你是在命令行里用sql插入的,对吗?
    删除了重来一遍吧。
    连接上数据库之后,
    运行命令行
    \encoding gbk
    然后再
    insert into ....退出之后,再跑你那个测试程序。
      

  10.   

    不知道你客户端的编码环境。
    所以一个个式吧
    PQsetClientEncoding(conn, "gbk")
    PQsetClientEncoding(conn, "utf8")
    PQsetClientEncoding(conn, "ucs2")