我正在尝试将代理对('', ,与本示例\uD852\uDF62
中的相同)插入MySQL。U+24B62
AnINSERT
带有未转义的文字,由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的推荐方法是什么?