MySQL數(shù)據(jù)庫經(jīng)典錯誤 九 數(shù)據(jù)庫總會出現(xiàn)中文亂碼的情況
2018-11-08 20:23:07
16578
數(shù)據(jù)庫總會出現(xiàn)中文亂碼的情況
有同學(xué)經(jīng)常會問,為什么我的數(shù)據(jù)庫總會出現(xiàn)中文亂碼的情況。一堆中文亂碼不知道怎么回事?當向數(shù)據(jù)庫中寫入創(chuàng)建表,并插入中文時,會出現(xiàn)這種問題。此報錯會涉及數(shù)據(jù)庫字符集的問題。
解決思路:對于中文亂碼的情況,記住老師告訴你的三個統(tǒng)一就可以。還要知道在目前的 MySQL 數(shù)據(jù)庫中字符集編碼都是默認的 UTF8。
處理辦法:
數(shù)據(jù)終端,也就是我們連接數(shù)據(jù)庫的工具設(shè)置為 utf8。
操作系統(tǒng)層面,可以通過 cat /etc/sysconfig/i18n 查看,也要設(shè)置為 utf8。
數(shù)據(jù)庫層面,在參數(shù)文件中的 mysqld 下,加入 character-set-server=utf8。
Emoji 表情符號錄入 MySQL 數(shù)據(jù)庫中報錯:
Caused by: java.sql.SQLException: Incorrect string value: ‘e??—e?…’ for column ‘CONTENT’ at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)
解決思路:針對表情插入的問題,一定還是字符集的問題。
處理方法:我們可以直接在參數(shù)文件中,加入:
vim /etc/my.cnf
[mysqld]
init-connect=’SET NAMES utf8mb4′
character-set-server=utf8mb4
注:utf8mb4 是 utf8 的超集。