[轉]更改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