Linux MySQL utf8 存入中文亂碼

項目使用了ExpresssequelizejsMySQL做爲基礎開發工具。本地開發運行一切正常,到了生成環境,發現向數據庫存中文,就出現亂碼。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 存入中文亂碼工具

相關文章
相關標籤/搜索