代码之家  ›  专栏  ›  技术社区  ›  Bass

使用INSERT语句将代理项对插入MySQL

  •  1
  • Bass  · 技术社区  · 8 年前

    我试图插入一个代理项对(“·”, \uD852\uDF62 与…一样 U+24B62 从…起 this example )进入 .

    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 甚至都不接近 ).

    另一方面,两者

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

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

    成功,但插入的值与原始值不同。

    我的数据库使用 utf8mb4 字符集,所以我认为它应该透明地处理代理。

    MySQL ?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Rick James diyism    8 年前

    使用 CHARACTER SET utf8mb4 utf8 utf16

    http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored 听起来你没有连接参数(或者 SET NAMES ).

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

    另一种方法是

    INSERT INTO unicode_test (value) VALUES (UNHEX('F0A4ADA2'));