【Mysql】解決插入資料出現 Incorrect string value: '\xF0\x9F\x92\x8BTi...'錯誤

來源:互聯網
上載者:User

標籤:編碼格式   支援   sql   4類   mysqld   背景   多表   資料   表情   

 

背景: 使用者輸入的表單裡邊。存在 手機內建的表情,  在執行插入時候報錯

Incorrect string value: ‘\xF0\x9F\x92\x8BTi...‘

 

錯誤原因:我們在設定mysql編碼格式時一般 utf-8 格式,是不支援帶四位元組的字串插入的。

 解決方案:

1.升級MySQL,然後將對應的資料類型改為utf8mb4類型(mysql 版本 >= 5.5)

2.出現的四位元組UTF-8字元過濾或轉化為自訂類型

 

方法1  : (不能只改表名字的編碼而忽略了欄位的編碼,親測。必須兩個都改才可以)

    直接升級mysql  ,把對應的欄位改為 utf-8mb4 即可

 

方法2: (沒試,網上找的)

$str = preg_replace(‘/[\x{10000}-\x{10FFFF}]/u‘, ‘‘, $str);  

 

 

番外: (網上查的資料)

對於mysql 5.5 而言,如果不設定字元集,mysql預設的字元集是 latin1 拉丁文字元集;

為了統一管理和應用開發的方便,一般都會統一將作業系統,用戶端,資料庫各方面的字元集都設定為 utf8 字元集,即能滿足各種字元應用,又能統一字元集,避免各種亂碼問題。  但隨著各種業務的進一步發展,除了各個國家的本身語言字元,經常也會有一些Emoji出現在應用程式中,而在mysql 5.5 之前,UTF-8編碼只支援1-3個位元組,支援BMP這部分的Unicode編碼區;從MySQL 5.5開始,可以支援4個位元組UTF編碼 utf8mb4 ,一個字元能夠支援更多的字元集,也能夠支援更多Emoji。  utf8mb4相容utf8,且比utf8能表示更多的字元,是utf8字元集的超集。所以現在一些新的業務,比如ISO等,會將MySQL資料庫的字元集設定為utf8mb4。 今天在處理一個應用需求的時候,就遇到這樣一個問題:應用所有的用戶端都是utf8字元集,MySQL資料庫也是utf8字元集,但現在有業務需要使用mb4部分增加的字元,需要MySQL資料調整字元集。 當然調整的最好方法是用戶端,mysql資料庫的字元集都修改為utf8mb4,但這樣修改量比較大,而且如果用戶端一部分修改為utf8,一部分為utf8mb4的話,容易發生混亂。所以業務需要所有用戶端的utf8字元集不變,仍讓保持為統一的utf8,只修改MySQL資料庫端,保證用戶端串連的utf8字元集串連到資料使用後,能夠當做utf8mb4字元來使用。 經過幾次測試後,MySQL資料庫的my.cnf中關於字元集的配置修改為下面的配置了: 
[client]  default-character-set=utf8mb4    [mysqld]  character-set-server = utf8mb4  collation-server = utf8mb4_unicode_ci  init_connect=‘SET NAMES utf8mb4‘  skip-character-set-client-handshake = true    [mysql]  default-character-set = utf8mb4  

 

  

 

【Mysql】解決插入資料出現 Incorrect string value: '\xF0\x9F\x92\x8BTi...'錯誤

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.