MySQL中文乱码解决方案集锦
2009-07-02 16:04
211 查看
整理一些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,都没有问题。
在使用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,都没有问题。
相关文章推荐
- MySQL中文乱码解决方案集锦
- mysql中文乱码解决方案集锦
- MySQL中文乱码解决方案集锦
- Mysql与JSP网页中文乱码问题的解决方案
- 我的乱码之路——JSP与MySQL交互的中文乱码解决方案及总结
- mysql-5.6.20-winx64免安装版数据库中文乱码终极解决方案
- MySql中文乱码问题以及Incorrect string value: '\xF0\x9F...' 问题的解决方案
- Mysql5.0中文乱码解决方案
- JDBC驱动mysql的中文乱码解决方案
- Mysql中文乱码问题完美解决方案
- ruby1.9 mysql中文乱码解决方案
- C#连接MySql中文乱码的解决方案
- Linux下mysql中文乱码解决方案
- Linux下进行MYSQL编程时插入中文乱码的解决方案
- mysql 插入中文乱码解决方案
- mysql 中文显示乱码解决方案
- MySQLdb 读取MySQL中的中文为????,活着是乱码的解决方案
- Linux下MySQL中文乱码问题解决方案
- 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
- PreparedStatement 在mysql下中文乱码解决方案