Dua penyelesaian. :
1. Ubah suai fail konfigurasi mysql pada pelayan, edit fail my.cnf, tambahkan baris character_set_server = utf8 di bawah [mysqld], dan kemudian mulakan semula perkhidmatan mysql
2. Apabila menggunakan sambungan jdbc, nyatakan Pengekodan yang betul, jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
Semak dokumentasi rasmi Apabila jdbc menyambung ke pangkalan data, ia akan menanyakan nilai character_set_server pelayan dan kemudian menentukan pengekodan yang digunakan semasa. sambungan. Untuk mengatasi fungsi pengekodan pengesanan automatik pelanggan, anda boleh menggunakan atribut characterEncoding
Alamat dokumen: https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference- charsets .html
Jelaskan parameter ini:
character_set_client: Set aksara yang digunakan oleh data sumber kliencharacter_set_connection: Set aksara lapisan sambungancharacter_set_database: Set aksara lalai bagi pangkalan data yang dipilih semasa
Ubah suai konfigurasi mys fail di sebelah pelayan dan edit fail my.cnf , tambahkan baris character_set_server = utf8 di bawah [mysqld], kemudian mulakan semula perkhidmatan mysql, dan kemudian tanya set aksara:
character_set_filesystem: Tukar nama fail pada os kepada set aksara ini Perduaan lalai tidak melakukan sebarang penukaran
character_set_results: Set aksara hasil pertanyaan
character_set_server: set aksara pengendalian dalaman lalai
character_set_system: set aksara metadata sistem
character_sets_dir: laluan set aksara
Kemudian ketahui tentang proses penukaran set aksara:
Sisipkan data:Pelayan menukar data daripada set aksara klien (set_karakter_klien) kepada set_karakter_sambungan, dan kemudian menukar set aksara_set_sambungan ke set aksara yang sepadan dan menyimpannya dalam cakera Ini Set aksara yang sepadan dinilai mengikut keutamaan berikut:
1 . . not set characterEncoding=utf8, server character_set_server ialah latin1, jdbc menyambung ke pangkalan data dengan set aksara latin1, dan perkhidmatan pangkalan data End menukar latin1 kepada utf8 dan kemudian menyimpannya ke cakera (kerana set aksara yang ditentukan oleh character_set_connection dan penciptaan jadual adalah kedua-duanya utf8), yang menyebabkan aksara bercelaru2. JDBC tidak menetapkan characterEncoding=utf8, dan character_set_server pelayan ialah utf8, atau jdbc set characterEncoding=utf8, jdbc menggunakan set aksara utf8 untuk menyambung ke pangkalan data, dan pelayan pangkalan data menyimpannya ke cakera dalam utf8 Pada masa ini, data adalah normal
Atas ialah kandungan terperinci Penyelesaian kepada masalah aksara Cina yang kacau apabila menyambung ke pangkalan data melalui jdbc di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!