摘要:自己的練習項目中涉及保存微信的,之前一直正常使用,但是突然遇到一個之前沒有遇到的問題。經過調試發現錯誤如下經過仔細查看發現可以獲得的數據,但是無法保存到數據庫,查看用戶的微信發現在中使用了字符。上查找發現主要解決方案就是的編碼設置由轉為。
自己的練習項目中涉及保存微信的nickname,之前一直正常使用,但是突然遇到一個之前沒有遇到的問題。經過調試發現錯誤如下: Incorrect string value: "xF0x9Fx99x88xF0x9F..." for column "nickname" at row 1 經過仔細查看發現可以獲得nickname的數據,但是無法保存到mysql數據庫,查看用戶的微信發現在nickname中使用了emoji字符。 到百度(只能用這個,其他的麻煩呀。)上查找發現主要解決方案就是MySQL的編碼設置由utf8轉為utf8mb4。 具體解釋可見:[詳細emoji表情與utf8mb4的關系][1] ,寫的非常全面詳細。
網上的解決辦法大多是修改my.cnf參數,設置mysql的編碼為utf8mb4,這種方法雖然徹底,但是通常要重啟mysql,會造成生產系統臨時當機。我認為寫的比較好的方法是:mysql/Java服務端對emoji的支持,一般可參考以上方法。文章中的關鍵點也說的比較清楚。
下面是我的處理方法:
要求:
1.MySQL的版本不能太低,低于5.5.3的版本不支持utf8mb4編碼。select version(); 2.JDBC驅動版本不能太低,mysql connector版本高于5.1.13。3.將表中的對應字段,比如會員表的呢稱字段,其字符集修改成utf8mb4。 4.最后修改druid數據源的配置,增加一行: mysql mysql-connector-java 5.1.38 5.檢查下jdbc連接串的設置: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8 這里要注意:有人建議刪除useUnicode=true&characterEncoding=utf8,但好像我這里會發生保存數據時發生亂碼的現象。
本文重要參考:mysql : utf8mb4 的問題
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65614.html
摘要:題外話補充一點是一種字符編碼方法,它是由國際組織設計,可以容納全世界所有語言文字的編碼方案。帶有的字符串截取在這類編程語言中一個中文字符的長度為,但是對大部分的并非全部取長度則是。 我在虎嗅上看過一篇關于Emoji的趣聞, 特別有意思, 在這里跟大家分享一下。里面提到了Emoji是怎么誕生的。 1999年前后,日本一個名叫栗田穰崇的年輕人,和許多直男一樣, 給女友發的短信經常會被誤解。...
閱讀 2577·2021-09-26 10:13
閱讀 5984·2021-09-08 10:46
閱讀 692·2019-08-30 15:53
閱讀 2966·2019-08-29 16:13
閱讀 2761·2019-08-26 12:23
閱讀 3485·2019-08-26 11:24
閱讀 1093·2019-08-23 18:09
閱讀 1032·2019-08-23 17:08