先前一直在用微软的SqlServer,MySql最近刚刚用,还不太熟。
客户端管理工具,我选用的是Navicat,使用时出现了如下的现象:
中文存取方面,我设定的字段格式为text,字符集为utf8.
1>如果在C#程序中使用Insert插入中文数据,则使用Select读出的数据也是中文的,但在Navicat中看到的相关字段显示为乱码。
2>如果直接在Navicat的相关表格中直接写入一条记录(某些字段包含中文),则在程序中Select得到的数据均为"???"。
感觉程序中认定的字符集似乎和Navicat默认的不符……查了一些资料,也没有得出一个确实的解决方法。
想请教大家,以上问题是由于什么原因引起的?应该如何来解决?非常感谢大家~~~

解决方案 »

  1.   

    set names utf8试试
      

  2.   

    Navicat刚刚用了没多久,可以麻烦楼上这位仁兄把操作步骤说的详细一点吗?
      

  3.   

    Navicat没有用过,试试
    set names utf8;
    在执行其它的SQL语句
      

  4.   

    执行一下
    set names 'gbk';
    参考下贴中的检查方法。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  5.   

    说明你的mysql和程序之间字符集不相同,比如你程序是gbk或者gb2312,而mysql一般都是utf-8
    navicat是可以协商字符集的,所以nabicat与mysql服务端是一样的字符
    你可以看看my.cnf或者my.ini是什么字符集,将其修改跟你程序用的一样即可
    如果想要跟navicat同样,需要set names gbk
    然后在[mysqld]节里面修改或者添加
    character-set-server=GBK
    重启mysql
    试试看
      

  6.   

    我用的是8,首先你要建立连接。输入用户密码把库连接上
    然后我的 字符集使用的是默认的latin1
    在Navicat的 连接右键找找连接属性我选的是Current Windows Codepage
    然后导入数据就不是乱码了这估计也和你导入数据的字符集可能有关。
    我在命令行下汉字也不会乱码
      

  7.   

    在“连接属性”的设置中,高级-“使用mysql字符集”去掉钩,并且将编码改为10008-GB2312.
    然后进入navicat的控制台后,show variables like 'char%';命令后如下:
    +--------------------------+---------------------------------------+
    | Variable_name            | Value                                 |
    +--------------------------+---------------------------------------+
    | character_set_client     | latin1                                |
    | character_set_connection | latin1                                |
    | character_set_database   | utf8                                  |
    | character_set_filesystem | binary                                |
    | character_set_results    | latin1                                |
    | character_set_server     | utf8                                  |
    | character_set_system     | utf8                                  |
    | character_sets_dir       | D:\mysql-5.1.32-win32\share\charsets\ |
     
    此时我们需要在控制台运行 set names 'gbk'命令,运行后再次show variables like 'char%';命令查看结果如下:
     
    +--------------------------+---------------------------------------+
    | Variable_name            | Value                                 |
    +--------------------------+---------------------------------------+
    | character_set_client     | gbk                                   |
    | character_set_connection | gbk                                   |
    | character_set_database   | utf8                                  |
    | character_set_filesystem | binary                                |
    | character_set_results    | gbk                                   |
    | character_set_server     | utf8                                  |
    | character_set_system     | utf8                                  |
    | character_sets_dir       | D:\mysql-5.1.32-win32\share\charsets\ |
     
    客户端连接环境设置算是完成了。接着中文数据该怎么插还是怎么插,不会再有乱码出现。
     
    至于从.sql.txt等文本批量导入数据,则需要将相应的文件转化为gbk格式保存再导入,否则导入后会乱码
      

  8.   

    其实都不用,直接设置连接属性里的“高级”→“使用MySQL字符集”就好了……我的Navicat是9.0
      

  9.   

    把之前的连接删除,然后在上面【链接】图标点下 新建链接 在“连接属性”的设置中,高级-“使用mysql字符集”去掉钩,并且将编码改为10008-GB2312