\xE4\xB8\xAD\xE6\x96\x87
adalah hex untuk 中文
("Bahasa Cina").
Di MySQL, ini akan bekerja dengan baik utf8
atau utf8mb4
. Namun, karena ada beberapa karakter Cina yang membutuhkan 4 byte, Anda benar menggunakan utf8mb4. Sementara itu, COLLATION
(mis., utf8mb4_unicode_ci) tidak masalah dengan Pertanyaan yang ada.
Rangkaian karakter kolom individu penting, bukan database. Dan 191 kludge hanya dibutuhkan di 5.5 dan 5.6. Harap berikan SHOW CREATE TABLE
.
Cara lain untuk menetapkan parameter koneksi adalah dengan mengeluarkan SET NAMES utf8mb4
segera setelah terhubung. (Ini tidak disukai, tetapi mungkin patut dicoba. Ini harus menjadi solusi untuk masalah Gorm yang disebutkan.)
Apakah Anda mendapatkan pesan kesalahan saat menghubungkan? Atau saat mengeluarkan kueri tertentu? Jika ya, berikan kueri itu.
Periksa apakah skip-character-set-client-handshake
tidak digunakan.
Lihat "Praktik terbaik" di https://stackoverflow.com/a/38363567/1766831
Tambahan Karena Anda menyebutkan prosedur tersimpan, saya sarankan Anda melakukan SHOW CREATE PROCEDURE
untuk melihat charset apa yang dibangunnya. Berikut adalah contoh dari apa yang dapat terjadi:
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)
Jika Anda tidak melihat utf8mb4 di PROCEDURE
dan FUNCTION
deklarasi, bangun kembali.