免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【MySQL】存儲emoji表情報錯(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解決方案
Emoji表情字符現(xiàn)在在APP已經(jīng)廣泛支持了。但是MySQL的UTF8編碼對Emoji字符的支持卻不是那么好。所以我們經(jīng)常會遇到這樣的異常:?Java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at row 11原因是Mysql里UTF8編碼最多只能支持3個字節(jié),而Emoji表情字符使用的UTF8編碼,很多都是4個字節(jié),有些甚至是6個字節(jié)。?解決的方案有兩種:?使用utf8mb4的mysql編碼來容納這些字符。過濾掉這些特殊的表情字符。方法1:使用utf8mb4的mysql編碼來容納這些字符注意:要使用utf8mb4類型,首先要保證Mysql版本要不低于 MySQL 5.5.3。?第一步:在mysql的安裝目錄下找到my.ini,作如下修改?[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'?修改后重啟Mysql?第二步:將已經(jīng)建好的表也轉(zhuǎn)換成utf8mb4?alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin;1將TABLE_NAME替換成你的表名。然后就OK了。網(wǎng)上流傳的一個版本增加了一個步驟,就是以root身份登錄Mysql,修改環(huán)境變量,將?character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server1都修改成utf8mb4。不過我沒有做這一步,也正常,所以可能是這一步是多余的。?方法2:過濾掉這些特殊的字符import org.apache.commons.lang.StringUtils;?public class charUtil {????/**?????* 替換四個字節(jié)的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解決方案 ???????*/????public static String removeFourChar(String content) {????????byte[] conbyte = content.getBytes();????????for (int i = 0; i < conbyte.length; i ) {????????????if ((conbyte[i] & 0xF8) == 0xF0) {????????????????for (int j = 0; j < 4; j ) {????????????????????conbyte[i j] = 0x30;// 0x30 int=48???字符=0????????????????}????????????????i = 3;????????????}????????}????????content = new String(conbyte);????????return content.replaceAll("0000", "");????}?????/**?????* 將emoji表情替換成*?????* @return 過濾后的字符串?????* 過濾的方式很簡單,直接使用正則表達式匹配編碼范圍,然后替換就行了。?????*/????public static String filterEmoji(String source) {????????if (StringUtils.isNotBlank(source)) {????????????return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", "*");????????} else {????????????return source;????????}????}?????public static void main(String[] arg) {????????try {????????????System.err.println("測試->將emoji表情替換成*");????????????String text = "This is a smiley \uD83C\uDFA6 face\uD860\uDD5D \uD860\uDE07 \uD860\uDEE2 \uD863\uDCCA \uD863\uDCCD \uD863\uDCD2 \uD867\uDD98 ";????????????System.out.println(text);????????????System.out.println(text.length());????????????System.out.println(text.replaceAll("[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]", "*"));????????????System.out.println(filterEmoji(text));????????????//輸出結(jié)果????????????//This is a smiley ?? face?? ?? ?? ?? ?? ?? ??????????????//45????????????//This is a smiley * face?? ?? ?? ?? ?? ?? ??????????????//This is a smiley * face* * * * * * *?????????????System.err.println("測試->替換四個字節(jié)的字符 '\\xF0\\x9F\\x98\\x84\\xF0\\x9F)的解決方案 ??");????????????String title = "ff的范德薩分????????Llfldakf;dsk。f????????????daslfjdsa;lfkjdsd'j'l'f'k'd'j'sa'l'k";????????????System.out.println(removeFourChar(title));????????????//輸出結(jié)果:ff的范德薩分Llfldakf;dsk。fdaslfjdsa;lfkjdsd'j'l'f'k'd'j'sa'l'k?????????} catch (Exception ex) {????????????ex.printStackTrace();????????}????}}來源:http://www.icode9.com/content-2-172551.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于用 MySQL 存儲 Emoji
MySQL utf8mb4字符集:支持emoji表情符號
java Mysql 存儲emoji表情解決方案
mysql字符集問題
MySQL 解決 emoji表情 的方法,使用utf8mb4 字符集(4字節(jié) UTF
求求你,別在MySQL中使用UTF-8了!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服