MySQL中文字符乱码解决

  • 格式:docx
  • 大小:20.66 KB
  • 文档页数:3

以下的文章主要介绍的是解决MySQL中文乱码的好用方案大汇总,我们大家都知道在使用MySQL数据库时,在插入中文字符的实际操作过程中,有时会出现一些乱码,例如,中文全被用?代替。

出现这种情况的原因,多是字符集不匹配造成的。

在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。

插入中文字符时,与之不匹配,就会出现乱码。

本人使用的是MySQL 5.0版,并用C#操作MYSQL数据库,当插入中文字符时,发现显示的是MySQL中文乱码。

初步估计是字符集没有配对。

查找后,发现MSYQL默认使用的是latin1,因此将数据库的配置文件中的字符设置改为utf8,并在C#中将中文字符,转为utf8,插入后,仍为乱码。

MySQL也支持gb2312,又将MySQL的字符设置改为gb2312,C#中使用Default,重起MySQL后,操作仍然无效。

后想起,虽然将MySQL的字符集设置为gb2312或utf8,但已经建立的数据库和表,仍采用的是默认的字符集,也即仍为当初的西欧字符集,最好,只得忍痛将数据库删除,重新以gb2312字符集建立数据库和表。

再用C#插入中文字符后,一切OK。

再安装好MySQL后,可以手工或使用配置工具,将my.ini文件中的默认字符集改为gb2312,再重新建库和表时,不用再在语句中指定字符集,其默认设置也即为gb2312,可以正常显示中文字符集。

1.建立数据库是一般的语句:
1.create database dbname;
2.在库中建表时语句为:
1.create table tbname(..........)engine=MyISAM character set gb
k collate gbk_chinese_ci;
3.程序中连接数据库的Connection对象需要写成
1.Connection con = DriverManaager.getConnection("jdbc:mysql://.
er=..&password=...&useUnicode=true&characterEncoding=gbk"
);
4.若在终端下用mysql命令向数据库插入数据,则在进入mysql时的命令写成:
1.#mysql --default-character-set=gbk -u ... -p
5.在jsp页面的编码设置为utf-8.
我找到一个方法好像可以MySQL中文乱码解决这个问题了
在安装mysql server的时候,无论是选择gb2312还是utf-8,都没有关系,这些字符集在phpMyAdmin中都可以很好的工作,主要是自己的脚本要正确的显示中文,可以在php脚本中,连接数据库之后,正式的数据查询提交之前执行下面的语句:
$SetCharacterSetSql = "SET NAMES '自己使用的字符集'";
1.$Recordset1 = mysql_query($SetCharacterSetSql, $conn_Resource
) or die(mysql_error());
然后再执行自己的查询语句,得到的结果就是正确的了。

刚刚试了gb2312和utf-8,都没有问题。

以上的相关内容就是对MySQL中文乱码解决方案集锦的介绍,望你能有所收获。

以下的文章主要介绍的是MySQL中文乱码的解决,MySQL中文乱码在实际的应用中是经常出现,导致实际的运行中产生很多的不便,以下的文章就是介绍MySQL 中文乱码的解决方案。

望你能有所收获。

原来常常在群里看到MySQL的乱码问题,但是由于本人一直在用oracle和sql server所以没多在乎,昨天用了用MySQL结果就遇到了传说中的乱码…..。

现在我们来讲讲MySQL的乱码问题。

首先你进入的你MySQL
用show variables查看
这里可以查看到你的字符集,character_set_server是服务器编码。

现在我们默认的是latin1要改变服务器的编码必须重新启动服务器,我们先用MySQLadmin
–uroot shutdown关闭服务器,然后MySQLd –C GBK启动服务器–C是character_set_server的一个简写(可以也可以写成MySQLd –
character_set_server gbk).这样修改以后我们再进入MySQL查看就会显示:这样我们就把服务器和数据库的编码改为了GBK。

现在我们就可以插入中文字符串了,但是为什么有时间还是会显示
1.Exception in thread "main" com.MySQL.jdbc.MySQLDataTruncation
:
Data truncation: Data too long for column 'name' at row 1 MySQL中文乱码解决中出现上述情况,这是因为你只是修改了MySQL的服务器的字符编码,并没有修改已经有数据库的编码,这时候你需要手动的把data目录下的数据库中的db.opt中的编码改为
1.default-character-set=gbk
2.default-collation=gbk_chinese_ci
这样修改以后你在重启服务器就可以插入中文了。

但是这时候还有个问题就是在你应用程序当中显示的是中文字符,但是在命令窗口还是乱码。

这时候你注意我们上面图中的character_set_client字符还是latin1当然显示的是乱码咯哟。

所以你进入MySQL客户端程序的时候因该把客户端默认的编码改为gbk才能显示正常。

你可以在MySQL里修改,也可以在登陆的时候MySQL –uroot –
default-character-set=gbk修改
如此以来就解决了MySQL中文乱码解决了。