MAC下 mysql不能插入中文和中文乱码的问题总结
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了,如果您发现那里有错误的地方,请一定要指出来啊。。。。
MAC下 mysql不能插入中文和中文乱码的问题总结的更多相关文章
- mysql 不能插入中文和显示中文
一)不能显示中文解决办法: 参考:http://bbs3.chinaunix.net/thread-880131-1-1.html 1:windows平台,因为windows操作系统默认的是用了gb2 ...
- mac下ssh到远程服务器时中文乱码
前言:mac本地的语言环境为英文,远程是支持中文的, 问题: 一开始是在iterm2下登录远程服务器更新数据库时发现中文注释不能正常显示,以为是iterms2下设置有问题,使用系统自带的termina ...
- 解决Zabbix 5.0不能选择中文和中文乱码问题
Zabbix web界面不能选择中文,提示: You are not able to choose some of the languages, because locales for them ar ...
- mac下mysql数据库的配置
这里记录一下. 之前在mac下使用brew install mysql安装,但是安装完成后发现密码不好修改,上网搜了下发现mac下使用命令行安装mysql确实存在很多问题,这一点确实远不如Ubuntu ...
- MAC下 mySQL及workbench安装
1.首先去mysql 网站下载安装包,https://dev.mysql.com/downloads/mysql/ 选择第一个.dmg格式的下载安装 2.安装完成后,在System Preferenc ...
- MAC下MySQL初始密码忘记修改初始密码
解决MAC下MySQL忘记初始密码的方法分享给大家,供大家参考,具体内容如下 第一步: 点击系统偏好设置->最下边点MySQL,在弹出页面中,点击stop MySQL Servier,输入密码关 ...
- MAC下MySQL初始密码忘记怎么办
解决MAC下MySQL忘记初始密码的方法分享给大家,供大家参考,具体内容如下 第一步: 点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务 第二步:进入终端输入:cd /usr/lo ...
- Mac下MySQL卸载方法 转载
mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事. 网上搜了一下,发现给的方法原来得手动去删. 很多文章记述要删的文件不完整,后来在stackoverflow这里发现了一个 ...
- Mac下MySQL卸载方法
mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事.1 sudo rm /usr/local/mysql2 sudo rm -rf /usr/local/mysql*3 su ...
随机推荐
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- 图片访问实时处理的实现(nodejs和php)
我在访问时光网.网易云音乐等网站时,发现将它们页面中的一些图片URL修改一下就可以得到不同尺寸的图片,于是思考了其实现方案,我的思路是:URL Rewrite + 实时处理 + 缓存,对用户请求的UR ...
- Oracle 的基本操作符
!= 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...
- ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...
- Java FtpClient 实现文件上传服务
一.Ubuntu 安装 Vsftpd 服务 1.安装 sudo apt-get install vsftpd 2.添加用户(uftp) sudo useradd -d /home/uftp -s /b ...
- [译]处理文本数据(scikit-learn 教程3)
原文网址:http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html 翻译:Tacey Won ...
- 微信小程序体验(1):携程酒店机票火车票
在 12 月 28 日微信公开课上,张小龙对微信小程序的形态进行了阐释,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载. 由于携程这种订酒店.火车票和机票等工具性质非常强的服务,非常符合张小 ...
- 品牌营销:不要Beat,要逼格!
品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...
- Java 教程整理:基础、项目全都有
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...
- 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...