\xE4\xB8\xAD\xE6\x96\x87
is hex voor 中文
("Chinese taal").
In MySQL werkt dit met utf8
of utf8mb4
. Aangezien er echter verschillende Chinese karakters zijn die 4 bytes nodig hebben, is het correct om utf8mb4 te gebruiken. Ondertussen is de COLLATION
(bijv. utf8mb4_unicode_ci) maakt niet uit voor de betreffende vraag.
De karakterset van de individuele kolom is belangrijk, niet die van de database. En de 191 kludge is alleen nodig in 5.5 en 5.6. Geef a.u.b. SHOW CREATE TABLE
.
Een andere manier om de verbindingsparameters tot stand te brengen, is door SET NAMES utf8mb4
. uit te geven direct na het aansluiten. (Dit heeft niet de voorkeur, maar kan het proberen waard zijn. Het zou een tijdelijke oplossing moeten zijn voor het genoemde Gorm-probleem.)
Krijg je de foutmelding bij het verbinden? Of bij het uitbrengen van een bepaalde vraag? Zo ja, geef die vraag dan op.
Controleer of skip-character-set-client-handshake
wordt niet gebruikt.
Bekijk de "Best practice" in https://stackoverflow.com/a/38363567/1766831
Aanvullingen Aangezien je een opgeslagen procedure noemde, raad ik je aan om SHOW CREATE PROCEDURE
te doen om te zien met welke charset het is gebouwd. Hier is een voorbeeld van wat er kan gebeuren:
mysql> SET NAMES latin1;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
Procedure: x
sql_mode: NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: latin1
collation_connection: latin1_swedish_ci
Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)
mysql> DROP PROCEDURE x;
Query OK, 0 rows affected (0.01 sec)
versus:
mysql> SET NAMES utf8mb4;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
Procedure: x
sql_mode: NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)
Als u utf8mb4 niet ziet op uw PROCEDURE
en FUNCTION
aangiften, herbouw ze.