真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么解決phpemojimysql錯(cuò)誤的問題

這篇文章給大家分享的是有關(guān)怎么解決php emoji MySQL錯(cuò)誤的問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

祁門ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

php emoji mysql錯(cuò)誤是因?yàn)閿?shù)據(jù)庫(kù)不支持表情,其解決辦法是:1、將字符集改為utfmb4;2、將emoji表情轉(zhuǎn)義,調(diào)用時(shí)再轉(zhuǎn)換回去即可。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版本、Dell G3電腦

如何解決php emoji mysql 錯(cuò)誤問題?

制作小程序時(shí)有用到把用戶微信名等信息存到數(shù)據(jù)庫(kù)中作為一個(gè)練習(xí)記錄的參考,但是發(fā)現(xiàn)當(dāng)微信名里面有emoji表情時(shí),這個(gè)表情卻無法存入數(shù)據(jù)庫(kù)字段中。之前用的時(shí)access數(shù)據(jù)庫(kù),字段中是可以直接存入表情的。

原因排查:

首先:我測(cè)試了一下是不是PHP程序的原因,使用post提交帶有emoji表情的內(nèi)容,提交的內(nèi)容是正常的,post里面的內(nèi)容是有emojin表情的。

怎么解決php emoji mysql錯(cuò)誤的問題

接著:試著將這個(gè)數(shù)據(jù)插入數(shù)據(jù)庫(kù)里面。成功插入數(shù)據(jù)庫(kù)后,發(fā)現(xiàn)表情變成了?號(hào)顯示。

怎么解決php emoji mysql錯(cuò)誤的問題

到這里問題基本上就明白了,就是我的數(shù)據(jù)庫(kù)不支持這個(gè)表情了。

注意!注意!注意:這是我用sql-front工具運(yùn)行的結(jié)果,但是在PHP程序中運(yùn)行,可能導(dǎo)致emoji表情后面所有的內(nèi)容都無法正常存入。如:

【“表情”標(biāo)題】emoji符號(hào)在內(nèi)容最開頭,插入內(nèi)容直接為空,

【前面“表情”標(biāo)題】插入內(nèi)容為【前面】,

emoji表情及emoji表情后面的內(nèi)容全部無法正常插入。

解決方法:

方法一:查了網(wǎng)上說是改變數(shù)據(jù)庫(kù)字符集編碼,試著將字符集改為了utfmb4。再插入一條數(shù)據(jù)看,確實(shí)表情被存入數(shù)據(jù)庫(kù)了。

怎么解決php emoji mysql錯(cuò)誤的問題

需要注意的是:但是即使改了數(shù)據(jù)庫(kù)的字符集,PHP程序也得相應(yīng)地更改字符集。要不然還是???。

定義方法為:mysqli_query($conn,"SET NAMES UTF8MB4");

怎么解決php emoji mysql錯(cuò)誤的問題

方法二:將emoji表情轉(zhuǎn)義,調(diào)用時(shí)再轉(zhuǎn)換回去。無非就是定義兩個(gè)函數(shù),一個(gè)轉(zhuǎn)義,一個(gè)反轉(zhuǎn)義。//emoji轉(zhuǎn)義

function en_emoji($str){
$en_str='';
$length=mb_strlen($str,'utf-8');
for($i=0;$i=4){
$en_str.=''.rawurlencode($tmp_str).'';
}else{
$en_str.=$tmp_str;
}
}
return $en_str;
}
//反轉(zhuǎn)義為emoji
function de_emoji($str){
$de_str=preg_replace_callback('|(.*?)|',function($matches){
return rawurldecode($matches[1]);
},$str);
return $de_str;
}

使用方法也很簡(jiǎn)單,在存入數(shù)據(jù)庫(kù)時(shí)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)義,讀取顯示時(shí)再反轉(zhuǎn)義即可。

en_emoji($str)后結(jié)果為:

怎么解決php emoji mysql錯(cuò)誤的問題

讀取顯示時(shí)使用de_emoji($str),就可以了。

兩種解決方法比較:

方法一:修改字符集,不僅要修改數(shù)據(jù)庫(kù),而且還要修改程序代碼。但是怎么說呢,可能以后數(shù)據(jù)庫(kù)都會(huì)升級(jí)為utf8mb4。

方法二:使用函數(shù)的方法,只需要修改程序,不需要?jiǎng)訑?shù)據(jù)庫(kù)。兩個(gè)函數(shù)實(shí)現(xiàn)了。但是存在數(shù)據(jù)庫(kù)里面的內(nèi)容相比就是一些亂碼的感覺。而且當(dāng)我在寫這篇文章時(shí)發(fā)現(xiàn),因?yàn)樵趦?chǔ)存數(shù)據(jù)時(shí)使用了en_emoji,所以所有的表情都變成了轉(zhuǎn)義后的代碼,而當(dāng)我在顯示文章內(nèi)容時(shí)使用反轉(zhuǎn)義de_emoji,這個(gè)時(shí)侯我發(fā)現(xiàn)我文章中本來想表現(xiàn)的轉(zhuǎn)義后內(nèi)容也被反轉(zhuǎn)義了??梢钥吹轿疑厦娴慕Y(jié)果表現(xiàn)我只能用一張圖片代替了。

結(jié)語(yǔ):還是少用emoji表情吧。反正都麻煩,當(dāng)然如果數(shù)據(jù)庫(kù)是自己做,程序也是自己寫用方法一設(shè)置utf8mb4還是比較完美的。但實(shí)話說吧,我只是在寫這篇文章時(shí)用了轉(zhuǎn)義函數(shù),寫完就先停用了,省得給我?guī)聿槐匾穆闊?/p>

感謝各位的閱讀!關(guān)于“怎么解決php emoji mysql錯(cuò)誤的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


本文標(biāo)題:怎么解決phpemojimysql錯(cuò)誤的問題
文章網(wǎng)址:http://weahome.cn/article/pejppd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部