我在linux下面,使用c语言向mysql插入一条记录,该记录有两个字段使用了中文,插入后,在终端里面查看,发现插入的这条记录的两个中文字段没有显示,请问怎么解决。
我在程序里面已经设置使用utf-8了。  mysql_set_character_set(sock, "utf8");

解决方案 »

  1.   

    mysql_set_character_set(sock, "gbk");
    或者单独调用"set names gbk"
      

  2.   

    谢谢你的回答,我把编码改为gbk之后,在数据库里面查看发现中文确实显示出来了,但是运行程序时在终端输出来却是乱码,跟使用utf8时的情形刚好相反,原先是在数据库里显示不出中文,终端显示正常,现在是终端显示乱码,数据库里面显示正常(我说的显示的数据都是通过程序插入的),请问这个得怎么办,另外谢谢@rucypli和@ACMAIN_CHM的回答
      

  3.   

    检查一下字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  4.   

    在数据库里查看,(用的是客户端工具),正常,很好。
    你的程序在终端里输出是乱码,是因为你终端里没有设置编码为gb2312或者gbk,估计你的终端默认是UTF8吧。在terminal里先将encoding设置为gbk,再运行程序看看。这应该是linux下的基本技能。
      

  5.   

    多谢版主的回答,我把终端的编码改为gbk之后,在终端的显示也正常了。但是我还是不明白,我之前服务器的编码是utf-8,传递给mysql_set_character_set()的字符集参数也是utf-8,那么客户端到服务器的连接所使用的编码也是utf-8,那在程序里面我向服务器端发送的语句也都是utf-8的,既然编码都一样,那为什么会有乱码呢,反而是使用gbk这个不一致的编码显示才正常?