emoji 表情字元插入的配置,emoji表情字元插入

來源:互聯網
上載者:User

emoji 表情字元插入的配置,emoji表情字元插入

最近做的項目中,在插入 �� 字元時報錯了

ERROR 1366: 1366: Incorrect string value: '\xF0\x9D\x8C\x86' for column 'vl' at row 1

在苦苦掙紮了數小時後將其解決掉了~~ 只要將 utf8 轉到 utf8mb4 就好了

這個問題其實不是那麼難,之所以花了比較長的時間來解決主要還是由於對於 MySQL 的配置不是很清楚,還好使用的資料庫版本是 5.5.39,因為夠幸運 在版本MySQL 5.5.3 (released in early 2010)時,剛好MySQL 支援了 utf8mb4 字元集。

具體 utf8 和 utf8mb4 的區別,可以參考https://mathiasbynens.be/notes/mysql-utf8mb4

下面把相應的解決方案貼出來,感謝大牛無處不在啊~~

要處理這樣的狀況肯定少不了更改 /etc/mysql/my.cnf 檔案咯,具體檔案的位置根據自己的配置尋找吧。

我們查看下 MySQL Server 現有的字元集吧

這是我現在資料庫的配置

接下來我們在 my.cnf 中添加以下配置

[client]default-character-set=utf8mb4[server]character_set_server=utf8mb4

配置後的情況

可以看到配置中的 client、connection、database、result、server 都是 utf8mb4 了。到這裡其實就完成了 90%,只要驗證下就知道了。

很好,沒有報錯,接下來進行查詢,可以看看是否能夠正常顯示

這一步也正確!
這樣我們對於資料庫的配置也算完成了,不過還要注意的一個問題就是當前操作的資料庫、資料表、欄位同樣是需要支援 utf8mb4 的

# For each database:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;# For each table:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;# For each column:ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

all done!

在做這個更改的過程中我其實同時使用了 mysql-workbench 和 mysql 進行訪問的, 但是奇怪的是

SHOW VARIABLES LIKE '%character%'

在 mysql 命令下顯示的是本機資料庫的配置,而在 mysql-workbench 中的卻不是,相當鬱悶啊~~

可以看到 client、connection 等沒有被更改為 utf8mb4, 不知道是不是 mysql-workbench 是否還有其他的配置,遺憾的是還沒有找到具體的配置方案,不過呢,作為臨時的解決方案,可以通過以下的命令來處理

SET NAMES utf8mb4

這樣感覺相當方便啊,一下子全給改掉了,不過不是持久的~~

~~噢噢,暫給出此種方案,知道原因的帥哥靚妹還望給個提示呢 ^_^

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.