天天看點

Emoji來龍去脈

1997年,日本人發明,定義在unicode的私有區域。

此時兩個位元組可以表示emoji。

IOS 4在日本支援emoji,使用的是這種私有編碼。

2010年,unicode 6.0正式支援emoji,所有emoji重新編碼。

此時的emoji所在的編碼範圍超出了2個位元組。

IOS 5開始,支援unicode的emoji,放棄對日本人的私有emoji支援。

是以,同一個emoji,尤其是老的那些emoji,有兩個編碼。

不同系統的支援情況,不一樣。

emoji的編碼雖然相同,但是樣子都是有專利的,是以各個系統,展示起來可能各不相同。

因為unicode的emoji超出了2個位元組的表示範圍,很多系統需要字元編碼才能支援emoji。比如mysql,在更新了utf8mb4之後才支援。

日本人的編碼,其實也不止一種,如果想要你的emoji在所有系統都能展示,需要你在展示的時候做轉換。

emoji的發展曆程、unicode編碼演化、以及各種系統對字元串編碼格式支援的變遷,三者互動在一起,引發各種有趣的問題。幾乎每一次emoji不能展示,背後都與這三者相關。

因為涉及到系統底層的編碼支援,很多時候問題不好解決。

本來想細細地寫一篇文章,最近身體不适,精力不允許了。感興趣的閱讀下我列出的參考資料,很有意思。

Reference

https://gist.github.com/mranney/1707371#file-emoji_sad-txt

https://en.wikipedia.org/wiki/Emoji

http://doc.cat-v.org/bell_labs/utf-8_history

https://emojipedia.org/unicode-6.0/

https://stackoverflow.com/questions/7856775/how-to-convert-the-old-emoji-encoding-to-the-latest-encoding-in-ios5

https://en.wikipedia.org/wiki/Private_Use_Areas

https://www.iamcal.com/emoji-in-web-apps/