sql >> Database >  >> RDS >> Mysql

MySQL genereert fout met onjuiste tekenreekswaarde

Het is het personage aan het einde van de tweet dat het probleem veroorzaakt.

Het ziet eruit als een 'emoji'-personage oftewel een Japans smileygezicht, maar het wordt niet weergegeven in Chrome of Safari.

Er zijn bekende problemen met het opslaan van 4byte utf-tekens in sommige versies van MySQL. Blijkbaar moet u utf8mb4 gebruiken om UTF-tekens van 4 bytes weer te geven, aangezien de normale utf8-tekenset alleen tekens tot een lengte van 3 bytes kan vertegenwoordigen en dus geen tekens kan opslaan die buiten de Basic meertalig vliegtuig

http://dev.mysql.com/doc /refman/5.5/en/charset-unicode-utf8mb4.html

Dat is nieuws voor mij, omdat het in feite betekent dat het utf8-gegevenstype in MySQL niet echt de juiste utf8 is.

Er zijn suggesties om dit hier aan te pakkenHoe utf-8 mb4-teken (emoji in ios5) in mysql invoegen? inclusief:

"Zorg er ook voor dat uw app-laag de tekenset van de databaseverbindingen instelt op utf8mb4. Controleer nogmaals of dit daadwerkelijk gebeurt - als u een oudere versie van de mysql-clientbibliotheek van uw gekozen framework gebruikt, is deze mogelijk niet gecompileerd met utf8mb4-ondersteuning en het zal de tekenset niet correct instellen. Zo niet, dan moet u het misschien bijwerken of zelf compileren"

Als je Connector/J gebruikt, moet je character_set_server=utf8mb4 instellen in de verbindingsconfiguratie.

Al je tekensets moeten utf8mb4 zijn, wat je misschien hebt geprobeerd, maar momenteel niet is ingesteld.



  1. Voorwaardelijke aggregatiequery met een groep op

  2. Eenvoudig SQL-database herstellen – Stapsgewijze handleiding

  3. PostgreSQL 9.0.4 volledig verwijderen van Mac OSX Lion?

  4. Onbeantwoorde vragen over MS SQL Server-beveiliging en toegangscontrole