MAC下 mysql不能插入中文和中文乱码的问题总结
2016-09-26 14:49
363 查看
MAC下 mysql不能插入中文和中文乱码的问题总结
前言
本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用。问题描述
本文解决下边两个问题:往mysql插入中文,能够成功,但mysql显示乱码
不能往mysql插入中文,插入英文或数字能够成功
其实,问题的根源还是文件或内容间使用了不同的编码方式造成的。首先查看当前使用的浏览器默认的编码方式是什么?
可以看出,这个网页的编码为中文gbk,再看简书的网页:
可以看出,大部分的网站都是utf8编码的。也就是说在中文gbk的编码下出的问题。
解决问题
按照下边步骤设置:找到mysql的安装目录下的
my-default.cnf这个文件。我的电脑的路径为
/usr/local/mysql-5.7.15-osx10.11-x86_64/support-files/my-default.cnf.
复制
my-default.cnf到目录
/etc下(打开Finder,使用快捷键command+shift+g),然后改名字为
my.cnf.
修改
my.cnf的内容为(这里的gbk也可换成utf8):
[client] default-character-set=gbk [mysqld] default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci
重启mysql,最好新建一个数据库,
create database name(name是你想要创建的名称)
代码
如果上边的弄完之后还有问题,那么就要在代码中对字符串进行utf8转换了。转换函数为:
function is_utf8($word){ if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){ return true; }else{ return false; } }
使用iconv函数转换字符串:
if (!is_utf8($isbn)) { $isbn = iconv('gb2312','utf-8',$isbn); } if (!is_utf8($author)) { $author = iconv('gb2312','utf-8',$author); } if (!is_utf8($title)) { $title = iconv('gb2312','utf-8',$title); }
说明
在使用中,用上边的函数转换后,就能正常保存到mysql了,如果您发现那里有错误的地方,请一定要指出来啊。。。。相关文章推荐
- MySQL不能插入中文字符及中文字符乱码问题
- mysql不能插入中文字符以及中文显示乱码问题
- mac上mysql不能插入中文问题
- Mysql不能插入中文和中文显示乱码问题
- 关于命令行中mysql中文乱码以及不能插入中文数据的问题
- 解决mac下MySQL插入中文显示乱码的问题
- 解决不能向mysql插入中文或乱码显示问题
- 在MAC下 Mysql 插入中文记录出现问号乱码的问题
- MySql不能插入中文问题解决
- mysql5.0中文插入乱码问题解决
- mysql中文乱码,无法插入中文的解决办法总结
- 简记mysql中文乱码(插入变成??)的问题.
- mysql中文乱码,无法插入中文的解决办法总结
- mysql5.0中文插入乱码问题解决
- Linux下MySQL常见问题收集 C语言插入MySQL中文乱码
- 解决Mysql插入中文乱码问题:Incorrect string value: ‘\xA8D\xA8D\xBA\xE1…’ for column
- Fluent NHibernate+MySQL插入数据中文乱码问题
- MySql中文乱码问题总结
- mysql 不能插入中文问题
- mysql中文乱码,无法插入中文的解决办法总结