国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程序 微信開發(fā) mysql保存emoji表情(微信開發(fā)用戶昵稱..)

mysql保存emoji表情(微信開發(fā)用戶昵稱..)

Feb 15, 2017 am 10:47 AM

?

java.sql.SQLException:?Incorrect?string?value:?'\xF0\x9F\x92\x94'?for?colum?n?'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)

?

當(dāng)報以上錯誤的時候,可能是java代碼中的字段與數(shù)據(jù)庫中的字段類型或者編碼不匹配,這種情況只要統(tǒng)一格式或者編碼就就可以了。

這里主要介紹emoji的圖像插入數(shù)據(jù)庫的錯誤以及解決方法


使用mysql數(shù)據(jù)庫的時候,如果字符集是UTF-8并且在java服務(wù)器上,當(dāng)存儲emoji表情的時候,會拋出以上異常(比如微信開發(fā)獲取用戶昵稱,有的用戶的昵稱用的是emoji的圖像)

這是由于字符集不支持的異常,因?yàn)閡tf-8編碼有可能是兩個,三個,四個字節(jié),其中Emoji表情是四個字節(jié),而mysql的utf-8編碼最多三個字節(jié),所以導(dǎo)致數(shù)據(jù)插不進(jìn)去。
解決方式:
一.從數(shù)據(jù)庫層面進(jìn)行解決(mysql支持utf8mb4的版本是5.5.3+,必須升級到較新版本)
? ? ?注意:
? ? ? (1.修改database,table,column字符集

ALTER?DATABASE?database_name?CHARACTER?SET?=?utf8mb4?COLLATE?=?utf8mb4_unicode_ci;ALTER?TABLE?table_name?CONVERT?TO?CHARACTER?SET?utf8mb4?COLLATE?utf8mb4_unicode_ci;ALTER?TABLE?table_name?CHANGE?column_name?VARCHAR(191)?CHARACTER?SET?utf8mb4?COLLATE?utf8mb4_unicode_ci;


? ? ? (2.修改mysql配置文件my.cnf(window為my.ini)

[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'

?


? ? ? ?(3.用的是java服務(wù)器,升級或者確保mysql connection版本高于5.1.13否則仍然不能試用utf8mb4
? ? ? ?(4.服務(wù)器端的db配置文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE
jdbc.username=root
jdbc.password=password

?


? ? 如果升級了mysql-connector,其中的characterEncoding=utf8可以自動被識別為utf8mb4(兼容原來的utf8),而
? ? autoReconnection(當(dāng)數(shù)據(jù)庫連接異常中斷時,是否自動重新連接?默認(rèn)為false)強(qiáng)烈建議配上,忽略這個屬性,可能導(dǎo)致緩存緣故 ,
? ? 沒有讀取到DB最新的配置,導(dǎo)致一直無法試用utf8mb4字符集;

二.從應(yīng)用層的方面進(jìn)行解決
? ? 在獲得數(shù)據(jù)之后往數(shù)據(jù)庫存之前先進(jìn)行編碼:?

URLEncoder.encode(nickName,?"utf-8");

?

? ? 當(dāng)從數(shù)據(jù)庫中取出準(zhǔn)備顯示的時候進(jìn)行解碼,?

URLDecoder.decode(nickname,?"utf-8");

? ? ?  從應(yīng)用層進(jìn)行解決的時候建議不要在對象getter,setter方法中直接編碼,因?yàn)榉湃雽ο蟮臅r候setter方法將nickname進(jìn)行編碼,當(dāng)插入數(shù)據(jù)庫的時候相當(dāng)于從對象中調(diào)用getter方法將你參考取出這就將之前setter編碼過的nickname又重新解碼了,等于未對Nickname進(jìn)行任何操作。依然會出現(xiàn)以上問題。

更多mysql保存emoji表情(微信開發(fā)用戶昵稱..)?相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)