1. 程式人生 > >呼叫微信API獲得暱稱有影象不能儲存的問題

呼叫微信API獲得暱稱有影象不能儲存的問題

案例描述:呼叫微信api時,使用者影象上面有emojj圖示時,儲存資料庫報錯

原因描述:

      普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,為了應對無線網際網路的機遇和挑戰、避免 emoji 表情符號帶來的問題、涉及無線相關的 MySQL 資料庫建議都提前採用 utf8mb4 字符集。

**************************************************************************************************************

解決方案:

方案1:.在程式碼中直接過濾影象,網上有類似的例子,沒有試過,但這樣相當於把使用者影象去掉,不合理

http://harveyzeng.iteye.com/blog/2274775

http://blog.csdn.net/et198901/article/details/49906797

方案2:修改資料庫字符集

要求:MySQL 5.5.3版本、從庫也必須是5.5的了、低版本不支援這個字符集、複製報錯。建議只修改表屬性即可,不用重啟資料庫。下面是修改表屬性字符集語句。

ALTER TABLE t_hhr_info MODIFY COLUMN wx_nickname VARCHAR(50) CHARACTER SET utf8mb4 NULL; 

參考:http://blog.itpub.net/26230597/viewspace-1243233

**************************************************************************************************************

最終效果:

存在資料庫看到是?號如下圖,但實際上是位元組形式


在前臺查詢的結果顯示出下圖:



最終發現如果客戶端是基於IE8瀏覽的,不能顯示出來。但在IE10及以上瀏覽上面是可以顯示出來圖示,IE9沒有測試不清楚具體版本。