\xE4\xB8\xAD\xE6\x96\x87
中文
の16進数です (「中国語」)。
MySQLでは、これはutf8
のいずれかで機能します またはutf8mb4
。ただし、4バイトを必要とする漢字がいくつかあるため、utf8mb4を使用するのが正しいです。一方、COLLATION
(例:utf8mb4_unicode_ci)は、手元の質問には関係ありません。
データベースではなく、個々の列の文字セットが重要です。そして、191クラッジは5.5と5.6でのみ必要です。 SHOW CREATE TABLE
を入力してください 。
接続パラメータを確立する別の方法は、SET NAMES utf8mb4
を発行することです。 接続直後。 (これは好ましくありませんが、試す価値があるかもしれません。前述のGormの問題の回避策になるはずです。)
接続時にエラーメッセージが表示されますか?または、特定のクエリを発行するとき?もしそうなら、そのクエリを提供してください。
skip-character-set-client-handshake
を確認してください 使用されていません。
https://stackoverflow.com/a/38363567/1766831>
補遺 ストアドプロシージャについて言及したので、SHOW CREATE PROCEDURE
を実行することをお勧めします それがどの文字セットで構築されたかを確認します。発生する可能性のある例を次に示します。
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)
対:
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)
PROCEDURE
にutf8mb4が表示されない場合 およびFUNCTION
宣言、それらを再構築します。