項目使用了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 存入中文亂碼工具