mysql資料庫使用的是utf8,最大儲存3個位元組,而emoji等以4個位元組進行的儲存,所以儲存不了
處理方法:
1:修改資料庫編碼由utf8公升級為utf8mb4,utf8mb4是utf8的超級,包含全部unicode編碼;該方法沒有具體操作;
2:進行過濾,對獲取到的使用者暱稱進行編碼過濾,對emoji等替換為「」空;但是該方法在碰到iso上的一些emoji就失敗了。在下方增加了一些處理過濾方法;
該過濾方法找自于網上 /** * 檢測是否有emoji字元
* @param source
* @return 一旦含有就丟擲
*/public
static
boolean containsemoji(string source)
int len =source.length();
for (int i = 0; i < len; i++)
}return
false
; }
private
static boolean isemojicharacter(char
codepoint)
/*** 過濾emoji 或者 其他非文字型別的字元
* @param source
* @return
*/public
static
string filteremoji(string source)
//到這裡鐵定包含
stringbuilder buf = null
;
int len =source.length();
for (int i = 0; i < len; i++)
} else
}if (buf == null
) else
else}}
/*方法3:* * 判斷特殊字元,替換成空格
* * @param source
* @return 過濾後的字串
*/public
static
string filterspecialcharacter(string source)
else
}else
}
/*方法4:進行編碼轉換儲存* * 過濾掉超過3個位元組的utf8字元
* @param text
* @return
* @throws unsupportedencodingexception
*/public
static
string filteroffutf8mb4(string text) throws unsupportedencodingexception
b += 256; //
去掉符號位
if (((b >> 5) ^ 0x6) == 0
) else
if (((b >> 4) ^ 0xe) == 0
) else
if (((b >> 3) ^ 0x1e) == 0
) else
if (((b >> 2) ^ 0x3e) == 0
) else
if (((b >> 1) ^ 0x7e) == 0
) else
}buffer.flip();
return
new string(buffer.array(), "
utf-8");
}
將需要處理的字串進行編碼轉換,儲存到資料庫
/*在頁面獲取的時候進行處理* * 字串轉換ascii
*/public
static string string2unicode(string string
)
return
unicode.tostring();}/*
* * ascii 轉字串
*/public
static
string unicode2string(string unicode)
return
string
.tostring();
}
//js ascii頁面處理過的效果轉string
function ascii2native()
}x[k].innerhtml=native;
}"nikeunicode").value=native1;
}
上文中的方法在android輸入法自帶的emoji下,沒有起到效果,在上文方法2的if(isemojicharacter(codepoint))
處加入下列判斷
privatestatic boolean ischinese(char
c)
return
false
; }
public
static boolean ispunctuation(char
c)
else
}private
static boolean isuserdefined(char
c)
public
static
boolean ismessy(string str)
chlength ++;}}
float result = count /chlength;
if(result > 0.3
)else
}
Emoji 特殊字元處理
emoji 特殊字元處理 對utf 8的mysql資料庫插入emoji等 特殊字元時會報錯。1.過濾 2.mysql字元設定為utf8mb4 public class emojifilter int len source.length for int i 0 i len i return false...
PHP開發丨3個簡單的方法處理emoji表情
一般mysql表設計時,都是用utf8字符集的。把帶有emoji的暱稱字段往裡面insert一下就沒了,整個字段變成了空字串。這是怎麼回事呢?原來是因為mysql的utf8字符集是3位元組的,而emoji是4位元組,這樣整個暱稱就無法儲存了。這要怎麼辦呢?我來介紹幾種方法 1 使用utf8mb4字符...
MYSQL 寫入emoji表情字元處理
這個鬼emoji表情是4個位元組,mysql使用的utf8編碼,utf8佔3個位元組,要儲存那個emoji表情需要將mysql編碼由uft8改為uft8的超集,utf8mb4 改資料庫編碼容易引起大麵的亂碼災難。所以當遇到emoji字元表情的時候做特殊處理。網上也有很多處理方案,最後找到了乙個貼上位...