MYSQL錯(cuò)誤:
今天向數(shù)據(jù)庫(kù)插入一條數(shù)據(jù)時(shí),有條數(shù)據(jù)的某個(gè)字段包含xF0x9Fx98x8A字符,導(dǎo)致MYSQL數(shù)據(jù)庫(kù)出現(xiàn)以下錯(cuò)誤:
我們可以看到錯(cuò)誤提示中的字符xF0x9Fx98x8A ,這對(duì)應(yīng)UTF-8編碼格式中的4字節(jié)編碼(UTF-8編碼規(guī)范)。正常的漢字一般不會(huì)超過(guò)3個(gè)字節(jié),為什么為出現(xiàn)4個(gè)字節(jié)呢?實(shí)際上是它對(duì)應(yīng)的是智能手機(jī)輸入法中的表情。那為什么會(huì)報(bào)錯(cuò)呢?因?yàn)閙ysql中的utf-8并不是真正意義上的utf-8,它只能存儲(chǔ)1~3個(gè)字節(jié)長(zhǎng)度的utf-8編碼,如果想存儲(chǔ)4個(gè)字節(jié)的必須用utf8mb4類型。不而要使用utf8mb4類型,首先要保證Mysql版本要不低于 MySQL 5.5.3。
解決:
1. 首先改變數(shù)據(jù)庫(kù)的字符的編碼格式為utf8mb4;
2. 再一個(gè)修改數(shù)據(jù)庫(kù)連接的配置,本人用的是php,所以修改數(shù)據(jù)庫(kù)連接編碼格式為utf8mb4
今天向數(shù)據(jù)庫(kù)插入一條數(shù)據(jù)時(shí),有條數(shù)據(jù)的某個(gè)字段包含xF0x9Fx98x8A字符,導(dǎo)致MYSQL數(shù)據(jù)庫(kù)出現(xiàn)以下錯(cuò)誤:
[10501]SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xF0x9Fx98x82xEFxBC...' for column 'info' at row 1錯(cuò)誤原因:
我們可以看到錯(cuò)誤提示中的字符xF0x9Fx98x8A ,這對(duì)應(yīng)UTF-8編碼格式中的4字節(jié)編碼(UTF-8編碼規(guī)范)。正常的漢字一般不會(huì)超過(guò)3個(gè)字節(jié),為什么為出現(xiàn)4個(gè)字節(jié)呢?實(shí)際上是它對(duì)應(yīng)的是智能手機(jī)輸入法中的表情。那為什么會(huì)報(bào)錯(cuò)呢?因?yàn)閙ysql中的utf-8并不是真正意義上的utf-8,它只能存儲(chǔ)1~3個(gè)字節(jié)長(zhǎng)度的utf-8編碼,如果想存儲(chǔ)4個(gè)字節(jié)的必須用utf8mb4類型。不而要使用utf8mb4類型,首先要保證Mysql版本要不低于 MySQL 5.5.3。
解決:
1. 首先改變數(shù)據(jù)庫(kù)的字符的編碼格式為utf8mb4;
2. 再一個(gè)修改數(shù)據(jù)庫(kù)連接的配置,本人用的是php,所以修改數(shù)據(jù)庫(kù)連接編碼格式為utf8mb4