1. 程式人生 > >[轉]更改MySQL資料庫的編碼為utf8mb4

[轉]更改MySQL資料庫的編碼為utf8mb4

utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情資料,Java程式中將報SQL異常:

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘name’ at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) 
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) 
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)

可以對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

系統變數 描述
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;
如有必要,還可以更改列的編碼…

相關推薦

更改mysql字元編碼utf8mb4

mysql修改字元編碼utf8mb4 使其支援Emoji表情儲存 utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情

MySQL】修改MySQL資料庫編碼utf8mb4以支援emoji表情儲存

set global options, # mysql-data-dir/my.cnf to set server-specific options # (@[email protected] for this installation) or to # ~/.my.cnf to set user-

[]更改MySQL資料庫編碼utf8mb4

utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情資料,Java程式中將報SQL異常: java.sql.SQLE

linux下更改MySQL資料庫編碼格式utf-8

設定MySQL資料庫編碼為UTF-8  登陸後檢視資料庫當前編碼:SHOW VARIABLES LIKE 'char%';  修改/etc/mysql/my.cnf (預設安裝路徑下) (標籤下沒有的新增,有的修改)   [mysqld]      character_

MySQL儲存emoji表情之Linux設定資料庫編碼utf8mb4

一、問題背景: MySQL資料庫編碼為utf8時,儲存emoji表情失敗,異常資訊: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘content’ at row

設定MYSQL資料庫編碼UTF-8 設定MYSQL資料庫編碼UTF-8

設定MYSQL資料庫編碼為UTF-8   1、  編輯MySql的配置檔案 MySql的配置檔案Windows下一般在系統目錄下或者在MySql的安裝目錄下名字叫my.ini,可以搜尋,Linux下一般是/etc/my.cnf  

CentOS下修改mysql資料庫編碼UTF-8(附mysql開啟遠端連線和開放3306埠)

樓主在配置好linux雲伺服器的jdk,tomcat,mysql後,當要開始部署專案是,突然意識到一個很嚴重的問題,那就是資料庫的編碼問題,自安裝完成後並未修改資料庫的額編碼。。。。下面就來說說linux下修改mysql的編碼問題吧。。有一個問題網上很多地方都沒說到,詳情請繼續往下看。

設定MYSQL資料庫編碼UTF-8

1、  編輯MySql的配置檔案 MySql的配置檔案Windows下一般在系統目錄下或者在MySql的安裝目錄下名字叫my.ini,可以搜尋,Linux下一般是/etc/my.cnf --在 [mysqld] 標籤下加上以下內容: default-characte

更改MySQL資料庫編碼utf8mb4

原文:http://blog.csdn.net/woslx/article/details/49685111 utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情資料

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

utf-8編碼可能2個位元組、3個位元組、4個位元組的字元,但是MySQL的utf8編碼只支援3位元組的資料,而移動端的表情資料是4個位元組的字元。如果直接往採用utf-8編碼的資料庫中插入表情資料,Java程式中將報SQL異常: java.sql.SQLException: Incorrect st

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

ice filesyste 內容 except 位置 tween see red dir utf-8編碼可能2個字節、3個字節、4個字節的字符,但是MySQL的utf8編碼只支持3字節的數據,而移動端的表情數據是4個字節的字符。如果直接往采用utf-8編碼的數據庫中插入表情

更改mysql欄位的編碼utf8mb4

ALTER TABLE tb_case MODIFY COLUMN content VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;ALTER TABLE tb_case MODIFY COLUMN

mysql無法插入中文的解決辦法:修改資料庫編碼utf-8

mysql無法插入中文的解決辦法 1.無法插入中文原因 mysql資料庫的預設編碼是latin1,可以使用下面程式碼檢視資料庫編碼 show variables like "%character%"; 發現有兩處的編碼是latin1,latin1編碼是不允許插入中文的,我們

mysql如何設定資料庫編碼utf-8

在使用mysql過程中,發現由於要用到中文,但是輸入進去資料庫中的中文無法通過web頁面顯示出來。排查定位到是編碼問題。故修改資料庫編碼為utf-8。 1.使用root賬號,開啟mysql 的配置檔案/etc/mysql/my.cnf. 新增如下程式碼:(一定要注意下劃線和

Mysql之——支援emoji 表情符號 升級編碼UTF8MB4

為了應對無線網際網路的機遇和挑戰、避免 emoji 表情符號帶來的問題、涉及無線相關的 MySQL 資料庫建議都提前採用 utf8mb4 字符集。注意Mysql5.5.3以上的版本才支援。 本文描述如何讓Mysql5.5.31在原來採用UTF8字符集的情況下,升級編碼為U

Ubuntu16.04 MySQL的安裝及設定資料庫編碼UTF-8

檢視MySQL是否安裝       netstat –tap | grep mysql 安裝MySQL       sudo apt-get install mysql-server mysql-client       輸入root使用者密碼 測試是否安裝成功    

修改資料庫mysql字元編碼UTF8

MySQL會出現中文亂碼的原因不外乎下列幾點: 1.server本身設定問題,例如還停留在latin1 2.table的語系設定問題(包含character與collation) 3.客戶端程式(例如php)的連線語系設定問題 強烈建議使用utf8!!!! utf8可以相容世界上所有字元!!!! 一、避免建

關於MySQL資料庫編碼修復相關問題

  本篇主要是本人在實際開發過程中遇到的MySQL字元編碼等bug修復相關問題。   在使用下列語句在執行資料庫表通過flask-sqlacodegen 進行ORM對映成模型類的時候發生的bug: flask-sqlacodegen mysql+pymysql://root:[email 

guns開源專案mysql資料庫切換postgresql

1、資料轉移 下載並安裝軟體dbconvert(dbconvert具體使用方法自行百度) 選擇本地mysql以及對應錶轉為postgresql dump 對應表 執行sql(若報錯,手動修改sql) 2、修改專案中pom檔案以及資料來源 3、執行專案報錯找不到"id"

MySQL修改編碼UTF-8無效果解決辦法

本來這是一件很簡單的事,有很多部落格裡都有教程,但卻足足花了我半天的時間才解決問題。 可能是因為我的MySQL安裝時沒有選擇預設路徑的原因,按照網上的教程修改了下圖中的my.ini配置檔案後編碼並沒有發生變化。 來回試了好幾次都不行,重啟了服務N次..... [mysqld] characte