由于現在資料庫的版本是<code>5.5.2</code>,但是看網上說要直接存儲<code>emoji</code>表情,需要更新到<code>5.5.3</code>然後把字元集設定為<code>utf8mb4</code>,但是更新資料庫感覺屬于敏感操作。
考慮了多久之後直接考慮使用正則來替換,但是<code>emoji</code>表情的<code>unicode</code>碼太多了,在網上找了一份代碼,還是2年前更新的,想了想還是算了。
最簡單的辦法就是直接找到接受到的文本中的字元串中4個位元組的内容,做<code>rawurlencode</code>編碼,再入庫。輸出的時候再替換回來,然後再用<code>rawurldecode</code>轉碼回<code>unicode</code>到手機再解析為<code>emoji</code>表情。
擷取字元串長度<code>mb_strlen</code>,按字元來截取字元串<code>mb_substr</code>(<code>mb_strcut</code>是按位元組來截取,有差別)。
php 就這麼輕松愉快的解決了。
考慮到想使用php裡面的套路,對原字元串逐個字元擷取其長度,如果超過3個位元組,那麼則編碼下,就能存儲了,依照上次的經驗,我寫了如下代碼
單個單個的來,能擷取到正确的位元組數,但是如何保證切割字元串的時候是正确的呢?我找遍了城市所有的街道,都沒有,找到我要的方法.