\xE4\xB8\xAD\xE6\x96\x87
jest szesnastką dla 中文
(„Język chiński”).
W MySQL zadziała to z utf8
lub utf8mb4
. Jednakże, ponieważ istnieje kilka chińskich znaków, które wymagają 4 bajtów, masz rację, używając utf8mb4. Tymczasem COLLATION
(np. utf8mb4_unicode_ci) nie ma znaczenia dla danego pytania.
Ważny jest zestaw znaków poszczególnych kolumn, a nie bazy danych. A kludge 191 jest potrzebny tylko w 5.5 i 5.6. Proszę podać SHOW CREATE TABLE
.
Innym sposobem ustalenia parametrów połączenia jest wydanie SET NAMES utf8mb4
zaraz po podłączeniu. (Nie jest to preferowane, ale może warto spróbować. Powinno to być obejście wspomnianego problemu z Gormem.)
Czy podczas łączenia pojawia się komunikat o błędzie? Lub podczas wydawania konkretnego zapytania? Jeśli tak, podaj to zapytanie.
Sprawdź, czy skip-character-set-client-handshake
nie jest używany.
Sprawdź „Najlepsze praktyki” w https://stackoverflow.com/a/38363567/1766831
Dodatki Ponieważ wspomniałeś o procedurze składowanej, sugeruję wykonanie SHOW CREATE PROCEDURE
aby zobaczyć, z jakim zestawem znaków został zbudowany. Oto przykład tego, co może się wydarzyć:
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)
kontra:
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)
Jeśli nie widzisz utf8mb4 w swojej PROCEDURE
i FUNCTION
deklaracje, odbuduj je.