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

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

mysql保存emoji表情(微信開(kāi)發(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)報(bào)以上錯(cuò)誤的時(shí)候,可能是java代碼中的字段與數(shù)據(jù)庫(kù)中的字段類型或者編碼不匹配,這種情況只要統(tǒng)一格式或者編碼就就可以了。

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


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

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

?


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

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

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

?

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

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

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

更多mysql保存emoji表情(微信開(kāi)發(fā)用戶昵稱..)?相關(guān)文章請(qǐng)關(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)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

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

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(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集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)