100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > mysql 乱码 latin1_mysql 数据库 latin1 导致的乱码

mysql 乱码 latin1_mysql 数据库 latin1 导致的乱码

时间:2022-11-29 15:46:23

相关推荐

mysql 乱码 latin1_mysql 数据库 latin1 导致的乱码

很多年以前遇到 mysql 的乱码问题。最近又遇到了。

mysql 这货,默认的编码是 latin1 (例如 latin1_swedish_ci)。——实在不明白为什么是这样。

而最近,主流的编码方式已经是 utf8 。mysql 中,最初采用 utf8_generalci 与其匹配,后来逐渐地使用 utf8unicode_ci 与其匹配。

比较神奇的是,有时候,mysql 数据库已经从 latin1 转成了 utf8 ,但是,phpmyadmin 中,显示出来的是乱码,而程序中现出来的却是正常的。——因此,如果不看数据库,也许不知道 mysql 层面保存的数据已经乱成一团。

但是,如果后期需要转移数据、或者恢复数据,就很可能发现了这些乱码,并且发现程序读取之后的字符也是乱码了。

今晚找到半天,终于在煩人的latin1轉utf-8問題找到了解决办法。

这个解决办法的主要思路就是:既然原来的数据是 latin1 格式的,那么,备份时就先按照 latin1 格式去把数据弄出来:

mysqldump -c -h localhost --user 用户名--password=用户密码 --default-character-set=latin1 --skip-set-charset 数据库名|bzip2 > mysql-backup-`date +%Y%m%d`.bz2

将这个压缩包里面的文件另存为 utf8 格式的 sql 文件之后,在顶部增加这一行:

SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary;

然后,重新导入即可。

ghost中文网在在阿里云服务器上安装 Ghost (3)-- 安装 MySQL提到如何设置 mysql 的默认字符集,如下:

1、编辑 /etc/mysql/f

nano -w /etc/mysql/f

2、找到[mysqld]这一段,增加以下 3 行; ——如果没有 [mysqld] 这一行,就先新增这行

collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8

重新启动 mysql 之后,就能避免 mysql 采用奇葩的 latin1 字符集了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。