Home > Database > Mysql Tutorial > body text

MySQL中文乱码解决方案集锦

WBOY
Release: 2016-06-07 16:53:12
Original
1069 people have browsed it

整理一些MySQL中文乱码解决方案,比较实用。在使用MySQL时,插入中文字符,经常会出现乱码,中文全被用?代替。出现这种情况的原因

整理一些MySQL中文乱码解决方案,比较实用。

在使用MySQL时,插入中文字符,经常会出现乱码,中文全被用?代替。

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

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

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

本人使用的是MySQL 5.0版,并用C#操作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.建立数据库是一般的语句: create database dbname;

2.在库中建表时语句为: create table tbname(..........)engine=MyISAM character set gbk collate gbk_chinese_ci;

3.程序中连接数据库的Connection对象需要写成Connection con = DriverManaager.getConnection("jdbc:mysql://...user=..&password=...&useUnicode=true&characterEncoding=gbk");

4.若在终端下用mysql命令向数据库插入数据,则在进入mysql时的命令写成:#mysql --default-character-set=gbk -u ... -p

5.在jsp页面的编码设置为utf-8.

-------------------------------

我找到一个方法好像可以解决这个问题了

在安装mysql server的时候,无论是选择gb2312还是utf-8,都没有关系,这些字符集在phpMyAdmin中都可以很好的工作,主要是自己的脚本要正确的显示中文,可以在php脚本中,连接数据库之后,正式的数据查询提交之前执行下面的语句:

$SetCharacterSetSql = "SET NAMES '自己使用的字符集'";

$Recordset1 = mysql_query($SetCharacterSetSql, $conn_Resource) or die(mysql_error());

然后再执行自己的查询语句,得到的结果就是正确的了。刚刚试了gb2312和utf-8,都没有问题。

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template