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?
'\ XF0 \ XA4 \ X-AD \ xA2'是碼點的_UTF-8_1表達'U + 24b62'(或_UTF-16_中的'\ uD852 \ uDF62')。 – JosefZ
另一個參考:http://unicode.scarfboy.com/?s=%F0%A4%AD%A2 –