项目使用了Express
、sequelizejs
、MySQL
做为基础开发工具。本地开发运行一切正常,到了生成环境,发现向数据库存中文,就出现乱码。javascript
其实乱码问题很容易猜到多是字符集的问题,而后核对数据库,发现没有问题。java
咨询了其余人,多是在存入的时候没有转成对应的字符集。mysql
查询 sequelizejs
配置,指定一个。发现仍是不能解决。sql
const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', define: { charset: 'utf8', dialectOptions: { collate: 'utf8_general_ci' } } })
后来发现,是 MySQL
默认字符集的问题。数据库
操做以下。bash
## 进入 MySQL mysql -u root -p ## 输入密码 ## 查看各类默认配置 show variables like '%char%'; ## 会有一个表 大概以下 ## 部分utf8 可能会是其余值,而后咱们慢慢修改 ## set character_set_client=utf8 ## 也能够用以上方法设置,但重启 mysql 又会回到原点 +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
## 退出数据库 vi /etc/my.cnf ## 编辑这个配置文件 ## 在对应的区域添加、新增 [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 ## 重启mysql服务 ## 再去看 char 就都是uft8 真棒
原文阅读:Linux MySQL utf8 存入中文乱码工具