微信小程式emoji表情的那些事

2021-09-09 07:58:37 字數 803 閱讀 4957

如果發現emoji儲存到資料庫後是亂碼,那麼請檢查一下該欄位型別是否為varchar,如果不是則應修改為nvarchar即可。下面說明原因,首先來說一下varchar和nvarchar的區別(這裡用sqlserver舉例,其他資料庫大同小異)

varchar(n)

長度為 n 個位元組的可變長度且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。

nvarchar(n)

包含 n 個字元的可變長度 unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。

兩欄位分別有字段值:我和coffee

那麼varchar欄位佔2×2+6=10個位元組的儲存空間,而nvarchar欄位佔8×2=16個位元組的儲存空間。

如字段值只是英文可選擇varchar,而字段值存在較多的雙位元組(中文、韓文等)字元時用nvarchar

上面是乙個總結介紹,通過上面的介紹,可以知道。

varchar(4) 可以輸入4個字母,也可以輸入兩個漢字

nvarchar(4) 可以輸四個漢字,也可以輸4個字母,但最多四個 

這個emoji表情的編碼格式採用的就是unicode,所以資料庫字段使用varchar的話會出現亂碼,以上方式是從資料庫層面解決問題,其實也可以不修改資料庫字段,那就是在從前端傳到服務端前,可以自行編碼,例如使用js中的encodeuricomponent函式,因此儲存的實際上是編碼後的emoji資料,在從服務端返回emoji表情資料的時候,用decodeuricomponent函式進行解碼就行了。

微信小程式開發之頭像是Emoji表情的儲存問題

只能儲存3個位元組,而 emoji表情有些需要佔4個位元組。這時就需要我們修改資料庫的編碼格式了。首先,我們新建資料庫時選擇utf8mb4編碼,相應的表中字段也設定成utf8mb4編碼 設定完之後,可以在資料庫 查詢 新建查詢裡執行一下下邊的命令,檢視資料庫的編碼格式是否改成utf8mb4編碼 sh...

過濾微信暱稱emoji表情

過濾emoji表情與非emoji表情 public class emojifilter return false 非emoji表情字元判斷 param codepoint return private static boolean notisemojicharacter char codepoint...

微信公眾平台暱稱亂碼emoji表情

warn 2015 07 03 01 15 12,368 org.hibernate.engine.jdbc.spi.sqlexceptionhelper 143 sql error 1366,sqlstate hy000 error 2015 07 03 01 15 12,369 org.hibe...