bitscn.com
mysql乱码终极解决方案 最近在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:显示页面编码: 第二解决方法: 进入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
bitscn.com
