阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL数据库中文变问号’???’ 解决

145次阅读
没有评论

共计 1453 个字符,预计需要花费 4 分钟才能阅读完成。

今天遇到了一个问题, 后端逻辑处理完存到 MySQL 数据库里的中文内容都变成问号‘???’了。第一反应是我数据库的排序规则搞错啦?马上登上 phpadmin 看了一眼,没毛病 都是 utf8_general_ci,手动修改问号成中文也都正常显示。这里要说一下另外一个问题,开始没注意这个排序规则,默认的是 latin1。导致的问题就是数据表中完全不能显示中文,不是乱码 是直接报错。

好啦,既然不是这个问题,那又是什么呢?

在网上找了一下,问题还挺“普遍的”。大致上就是字符集编码问题,改一下就好了,下面是我找到的解决方式(参考其他答主 因为太零碎了就不一一贴参考链接了 再说我也实在不知道哪个才是原答主【ε=ε=ε=┏(゜ロ゜;)┛】):系统环境是 Ubuntu 14.04,Windows 请找 my.ini

  1. sudo vi /etc/mysql/my.cnf
  2. 在[client]/[mysqld_safe]/[mysql]下面依次加入
    default-character-set=utf8
    在 [mysqld] 下面加入
    init_connect=’SET collation_connection = utf8_unicode_ci’
    init_connect=’SET NAMES utf8’
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    3. 重启 mysql
    sudo /etc/init.d/mysql restart

按照网上其他答案 这时候应该可以了。但是……
what??? 我发现并没有什么用呀?!!!
好吧,下面 才是我真正想说的:
首先第一步,修改这些配置文件的时候,你会发现它们是 read only 也就只读的。所以我们理所应当的敲下了下面的命令

sudo chmod -R 777 /ect/MySQL/my.cnf

(我知道这不是个好习惯,但是真的很多人都这是这么做的 -/-)

好的,这个时候终于可以修改 my.cnf 啦
这个时候,有的同学可以顺利的修改 进行下一步啦。但是!!!以我为代表的另一部分同学就倒霉啦,打开 my.cnf 一看…… what??基本就是个空的,毛都没有?!好啦好啦 请坐下,这个时候你要看一看下边是不是有个 include****** 对记住后边的文件 去这些文件里做修改就行啦。其实,你直接把需要修改的内容写在 my.cnf 中也是可以的,我就这么干了。

终于到了最后一步,重启完 mysql,又试了一下,还是乱码……
问题出在哪呢?请跟我做:

sudo mysql -u root -q

回车之后,会有个 warning /etc/mysql/my.cnf Ignore
意思是 my.cnf 被忽略了。它被忽略了 那我们的修改肯定没有用了呀。
其实,我们一开始修改了它的读写权限是 777,所有人都可以读写它。系统认为它不安全,才有了这个 warning。
所以再我们修改完之后,要再改一下它的权限,比如 644?

好的 现在重启 mysql 再实验一下 没问题啦!!!

ps:查看 mysql 字符集编码命令:

sudo mysql -u root -p
进入 mysql 然后输入命令
show variables like‘%character%’;
就可以看到了 没截图 就不放了。

啰里啰唆说了一堆,主要是把我遇到的坑记录一下。如果对你有帮助 那我也很开心。

不明白的 或者我写的不对的 欢迎留言。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144068.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1453字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中