最近在Linux自带的Mysql数据库中执行了一个sql文件,在数据库中查询没有任何问题,可以看到中文数据,但是在JSP页面中显示时却出现了乱码,在spring的配置数据库的连接URL中,指定了编码“characterEncoding=UTF-8”,而且浏览器也是UTF-8的编码,为什么就会是乱码呢。最后得出结论,原来是Linux自带的数据库并不是UTF-8的编码,整理后,得到以下几种解决方案:
第一解决方法:
乱码问题简单说就是数据库写入读取,网页文件,网页显示时几个环节的编码不一致造成的。
乱码问题
写入时:页面提取写入数据编码和写入数据库时编码不一致
读取时:读取后所用编码与数据库写入时不一致
显示时:编码与数据库读取后的数据不一致
很显然只有三者都统一才行:(以utf-8为例)
1:页面提交数据编码utf-8(这也可以算是显示页面编码),
2:数据库写入时编码:alter database db default character set ‘utf8’collate ‘utf8-general-ci’,
3:数据库读取时所用编码:mysql_query(“set names ‘utf8’”);
4:显示页面编码:<meta http-equiv="Content-type"content=“text/html, charset=utf-8”>
第二解决方法:
进入MYSQL命令行:
mysql> alter database you_dbname default character set 'utf8';
mysql> SET character_set_client='utf8';
mysql>
SET character_set_connection='utf8'
mysql>
SET character_set_results='utf8'
第三解决方法:
(暂时只针对MySQL 5.0.16 乱码问题处理办法,其他版本未测试。)
1 设置phpMyAdmin
Language:Chinese simplified (zh-utf-8)
MySQL 字符集:UTF-8 Unicode (utf8)
MySQL 连接校对:gbk_chinese_ci
2 创建数据库时
整理设置成 gbk_chinese_ci
3 用SQL建立表中
ENGINE=MyISAM DEFAULT CHARSET=gbk;
ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40 ;
4 检查表结构中
varchar(100) 的整理属性为gbk_chinese_ci
其它类型的整理属性为空
5 代码中加上
$db->query("SET CHARACTER SET GBK"); Linux下需要,Windows下不需要
这个相当于Connection Character Sets and Collations
分享到:
相关推荐
解决MYSQL数据库中的乱码问题,总结出来的重点,欢迎大家一起分享东西!
MySQL乱码解决方案数据库乱码MySQL乱码解决方案数据库乱码
提供解决mySQl中文乱码的终极解决方案
mysql乱码问题解决方案,三套方案希望可以帮助到大家!!!!
mysql乱码问题解决mysql乱码问题解决mysql乱码问题解决
MySQL中文乱码问题解决方案,彻底解决mysql中的中文乱码问题
MySql中文乱码问题 Mysql建库建表 Mysql建库建表中文乱码问题 Mysql中文乱码问题解决方案
mysql乱码解决方案,很详细的权威说法
mysql中文乱码解决方案
解决MySQL数据库乱码问题,以及命令行查表乱码问题
史上最全的PHP+MySql中文乱码解决方案
MySql乱码问题解决方法MySql乱码问题解决方法
MySQL数据库系统中文乱码问题及解决方案.pdf
MySQL显示乱码解决方案,本例为MySQL 5.5版本,其他版本大同小异,皆可参考。
MYsql乱码MYsql乱码MYsql乱码MYsql乱码MYsql乱码MYsql乱码MYsql乱码MYsql乱码MYsql乱码
jsq+mybatis+mysql中文乱码的详细方案。
MySQL解决方案工程师总结,MySQL高可用解决方案,全部使用MySQL官方社区版本。
Mysql中文乱码问题完美解决方案
mysql出了乱码可查,方便快捷,好用。jsp开发的过程中遇到的数据库端乱码解决办法都在这里了,跑不出去