最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】

來源:懂視網 責編:小采 時間:2020-11-09 20:25:30
文檔

mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】

mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】:本文實例分析了mysql存儲emoji表情報錯的處理方法。分享給大家供大家參考,具體如下: utf-8編碼可能2個字節、3個字節、4個字節的字符,但是MySQL的utf8編碼只支持3字節的數據,而移動端的表情數據是4個字節的字符。如果直接往采用utf-8編碼的數據庫中插
推薦度:
導讀mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】:本文實例分析了mysql存儲emoji表情報錯的處理方法。分享給大家供大家參考,具體如下: utf-8編碼可能2個字節、3個字節、4個字節的字符,但是MySQL的utf8編碼只支持3字節的數據,而移動端的表情數據是4個字節的字符。如果直接往采用utf-8編碼的數據庫中插

可以對4字節的字符進行編碼存儲,然后取出來的時候,再進行解碼。但是這樣做會使得任何使用該字符的地方都要進行編碼與解碼。

utf8mb4編碼是utf8編碼的超集,兼容utf8,并且能存儲4字節的表情字符。
采用utf8mb4編碼的好處是:存儲與獲取數據的時候,不用再考慮表情字符的編碼與解碼問題。

更改數據庫的編碼為utf8mb4:

1. MySQL的版本

utf8mb4的最低mysql版本支持版本為5.5.3+,若不是,請升級到較新版本。

2. MySQL驅動

5.1.34可用,最低不能低于5.1.13

3.修改MySQL配置文件

修改mysql配置文件my.cnf(windows為my.ini)

my.cnf一般在etc/mysql/my.cnf位置。找到后請在以下三部分里添加如下內容:

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

4. 重啟數據庫,檢查變量
代碼如下:SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci
collation_server utf8mb4_unicode_ci

collation_connection 、collation_database 、collation_server是什么沒關系。

但必須保證

系統變量 描述
character_set_client (客戶端來源數據使用的字符集)
character_set_connection (連接層字符集)
character_set_database (當前選中數據庫的默認字符集)
character_set_results (查詢結果字符集)
character_set_server (默認的內部操作字符集)

這幾個變量必須是utf8mb4。

5. 數據庫連接的配置

數據庫連接參數中:

characterEncoding=utf8會被自動識別為utf8mb4,也可以不加這個參數,會自動檢測。

autoReconnect=true是必須加上的。

6. 將數據庫和已經建好的表也轉換成utf8mb4

更改數據庫編碼:
代碼如下:ALTER DATABASE caitu99 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

更改表編碼:

代碼如下:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATEutf8mb4_general_ci;

如有必要,還可以更改列的編碼

7、在第3步設置character_set_database,character_set_server不成功的可以試下直接在mysql.exe下

set @@character_set_server='utf8mb4';
set @@character_set_database='utf8mb4';

這下數據庫就可以存下emoji表情的編碼了。

附上我的my.ini

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL存儲過程技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:

  • 全面了解mysql中utf8和utf8mb4的區別
  • 設置mysql5.7編碼集為utf8mb4的方法
  • 詳解JDBC對Mysql utf8mb4字符集的處理
  • Spring Data Jpa Mysql使用utf8mb4編碼的示例代碼
  • MySQL字符集utf8修改為utf8mb4的方法步驟
  • 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】

    mysql存儲emoji表情報錯的處理方法【更改編碼為utf8mb4】:本文實例分析了mysql存儲emoji表情報錯的處理方法。分享給大家供大家參考,具體如下: utf-8編碼可能2個字節、3個字節、4個字節的字符,但是MySQL的utf8編碼只支持3字節的數據,而移動端的表情數據是4個字節的字符。如果直接往采用utf-8編碼的數據庫中插
    推薦度:
    標簽: 表情 編碼 mysql
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    国产精品久久久久精品…-国产精品可乐视频最新-亚洲欧美重口味在线-欧美va免费在线观看