先前一直在用微软的SqlServer,MySql最近刚刚用,还不太熟。
客户端管理工具,我选用的是Navicat,使用时出现了如下的现象:
中文存取方面,我设定的字段格式为text,字符集为utf8.
1>如果在C#程序中使用Insert插入中文数据,则使用Select读出的数据也是中文的,但在Navicat中看到的相关字段显示为乱码。
2>如果直接在Navicat的相关表格中直接写入一条记录(某些字段包含中文),则在程序中Select得到的数据均为"???"。
感觉程序中认定的字符集似乎和Navicat默认的不符……查了一些资料,也没有得出一个确实的解决方法。
想请教大家,以上问题是由于什么原因引起的?应该如何来解决?非常感谢大家~~~
客户端管理工具,我选用的是Navicat,使用时出现了如下的现象:
中文存取方面,我设定的字段格式为text,字符集为utf8.
1>如果在C#程序中使用Insert插入中文数据,则使用Select读出的数据也是中文的,但在Navicat中看到的相关字段显示为乱码。
2>如果直接在Navicat的相关表格中直接写入一条记录(某些字段包含中文),则在程序中Select得到的数据均为"???"。
感觉程序中认定的字符集似乎和Navicat默认的不符……查了一些资料,也没有得出一个确实的解决方法。
想请教大家,以上问题是由于什么原因引起的?应该如何来解决?非常感谢大家~~~
set names utf8;
在执行其它的SQL语句
set names 'gbk';
参考下贴中的检查方法。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
navicat是可以协商字符集的,所以nabicat与mysql服务端是一样的字符
你可以看看my.cnf或者my.ini是什么字符集,将其修改跟你程序用的一样即可
如果想要跟navicat同样,需要set names gbk
然后在[mysqld]节里面修改或者添加
character-set-server=GBK
重启mysql
试试看
然后我的 字符集使用的是默认的latin1
在Navicat的 连接右键找找连接属性我选的是Current Windows Codepage
然后导入数据就不是乱码了这估计也和你导入数据的字符集可能有关。
我在命令行下汉字也不会乱码
然后进入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格式保存再导入,否则导入后会乱码