Rumah  >  Artikel  >  Java  >  Penyelesaian kepada masalah aksara Cina yang kacau apabila menyambung ke pangkalan data melalui jdbc di Jawa

Penyelesaian kepada masalah aksara Cina yang kacau apabila menyambung ke pangkalan data melalui jdbc di Jawa

WBOY
WBOYke hadapan
2023-04-26 14:04:081955semak imbas

1. Gunakan jdbc untuk menyambung ke pangkalan data Apabila memasukkan ke dalam pangkalan data, data dalam data memaparkan aksara bercelaru, "???"

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

2. Mengapa character_set_server = utf8 tidak perlu menyatakan pengekodan apabila menyambung ke jdbc

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

3. Apakah mekanisme pemprosesan aksara MYSQL? >Semak set aksara MYSQL dahulu

Penyelesaian kepada masalah aksara Cina yang kacau apabila menyambung ke pangkalan data melalui jdbc di JawaJelaskan parameter ini:

character_set_client: Set aksara yang digunakan oleh data sumber klien
character_set_connection: Set aksara lapisan sambungan

character_set_database: Set aksara lalai bagi pangkalan data yang dipilih semasa
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

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:

Penyelesaian kepada masalah aksara Cina yang kacau apabila menyambung ke pangkalan data melalui jdbc di JawaKemudian 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 bercelaru

2. 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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam