2017-08-02 77 views
1

我試圖插入一個代理對(「」,\uD852\uDF62,從this example一樣U+24B62)到的MySQL插入代理對到MySQL與INSERT語句

INSERT與轉義文字,通過this answer建議:

INSERT INTO unicode_test (value) VALUES (''); 
-- or 
INSERT INTO unicode_test (value) VALUES (_utf8''); 

失敗

Error Code: 1366. Incorrect string value: '\xF0\xA4\xAD\xA2' for column 'value' at row 1 

(注意\xF0\xA4\xAD\xA2甚至沒有接近\uD852\uDF62原始值)。

在另一方面,無論

INSERT INTO unicode_test (value) VALUES (_utf16''); 

INSERT INTO unicode_test (value) VALUES (_utf8mb4''); 

成功,但插入的值是從原來的不同。

我的數據庫使用utf8mb4字符集,所以我認爲它應該透明地處理代理。

將非BMP字符插入到的推薦方法是什麼MySQL

+1

'\ XF0 \ XA4 \ X-AD \ xA2'是碼點的_UTF-8_1表達'U + 24b62'(或_UTF-16_中的'\ uD852 \ uDF62')。 – JosefZ

+0

另一個參考:http://unicode.scarfboy.com/?s=%F0%A4%AD%A2 –

回答