\xE4\xB8\xAD\xE6\x96\x87
je hex pro 中文
("čínský jazyk").
V MySQL to bude fungovat buď s utf8
nebo utf8mb4
. Protože však existuje několik čínských znaků, které potřebují 4 bajty, je správné použít utf8mb4. Mezitím COLLATION
(např. utf8mb4_unicode_ci) nezáleží na otázce.
Důležitá je znaková sada jednotlivého sloupce, nikoli databáze. A 191 kludge je potřeba pouze v 5,5 a 5,6. Uveďte prosím SHOW CREATE TABLE
.
Dalším způsobem, jak nastavit parametry připojení, je vydat SET NAMES utf8mb4
ihned po připojení. (Toto není preferováno, ale mohlo by to stát za vyzkoušení. Mělo by to být řešení pro zmíněný problém Gorm.)
Zobrazuje se vám při připojování chybová zpráva? Nebo při zadávání konkrétního dotazu? Pokud ano, uveďte tento dotaz.
Zkontrolujte, zda je skip-character-set-client-handshake
se nepoužívá.
Podívejte se na „Osvědčený postup“ v https://stackoverflow.com/a/38363567/1766831
Dodatky Protože jste zmínili uloženou proceduru, doporučuji provést SHOW CREATE PROCEDURE
abyste viděli, s jakou znakovou sadou byl postaven. Zde je příklad toho, co se může stát:
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)
Pokud v PROCEDURE
nevidíte utf8mb4 a FUNCTION
deklarace, přestavte je.