mysql存入emoji表情現在為???.按網上的說法把mysql的字元集改為utf8mb4,還是無效,顯示為亂碼。。請問有人遇到過嗎?
回複討論(解決方案)
emoji 表情是擴充的 utf-16 編碼
你可以貼出含有 emoji表情 的文字的 base64 編碼串
看看能否幫你解決問題
emoji 表情是擴充的 utf-16 編碼
你可以貼出含有 emoji表情 的文字的 base64 編碼串
看看能否幫你解決問題
這個就是表情base64位儲存後的資料。8J+YhPCfmIM= 。版*煩看看!.現在好多應用都支援這個表情輸入,就是不知道怎麼儲存的。
應該說改用 utf8mb4 字元集就可以了,不知道你為什麼不行
考慮到文字中 emoji 字元並不多,可以用正則替換一下在存入
$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);@E8J+YhA==@E8J+Ygw==
都會後逆轉換一下就可以了
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);bool(true)
應該說改用 utf8mb4 字元集就可以了,不知道你為什麼不行
考慮到文字中 emoji 字元並不多,可以用正則替換一下在存入
$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);@E8J+YhA==@E8J+Ygw==
都會後逆轉換一下就可以了
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);bool(true)
是啊,很鬱悶。網上都說只要設定為utf8mb4 就行,可我的就不行。mysql的版本是用的是5.6的。。。。,wampserver環境。會不會是環境問題?
樓主,我也遇到相同的問題了,請問你最後怎麼解決的?