2017-08-02 2 views
1

Ich versuche, ein Ersatzpaar einzufügen (‚‘, \uD852\uDF62, die gleiche wie U+24B62 von this example) in MySQL.Einfügen ein Ersatzpaar in MySQL mit einer INSERT-Anweisung

Ein INSERT mit einem unescaped wörtlichen, von this answer vorgeschlagen:

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

mit

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

(beachten Sie, dass \xF0\xA4\xAD\xA2 auf den ursprünglichen Wert von \uD852\uDF62 nicht einmal in der Nähe ist).

Auf der anderen Seite, beide

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

und

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

erfolgreich zu sein, aber die sind eingefügten Werte unterscheidet sich von dem Original.

Meine Datenbank verwendet den utf8mb4 Zeichensatz, also nehme ich an, dass es Surrogate transparent behandelt.

Was ist die empfohlene Methode zum Einfügen von Nicht-BMP-Zeichen in MySQL?

+1

'\ xF0 \ XA4 \ xAD \ xA2' _UTF-8_ Expression von Codepunkt ist' U + 24b62' (oder '\ uD852 \ uDF62' in _UTF-16_). – JosefZ

+0

Eine weitere Referenz: http://unicode.scarfboy.com/?s=%F0%A4%AD%A2 –

Antwort