Rumah >pangkalan data >tutorial mysql >Mengapakah rentetan Cyrillic saya muncul sebagai \'????????\' dalam pangkalan data MySQL saya walaupun menetapkan `characterEncoding=utf-8` dalam sambungan JDBC saya?

Mengapakah rentetan Cyrillic saya muncul sebagai \'????????\' dalam pangkalan data MySQL saya walaupun menetapkan `characterEncoding=utf-8` dalam sambungan JDBC saya?

Susan Sarandon
Susan Sarandonasal
2024-11-01 22:38:021068semak imbas

Why are my Cyrillic strings appearing as

Cara Mengekodkan Rentetan UTF-8 dengan Betul untuk MySQL Menggunakan JDBC

Pengenalan

Bila bekerja dengan MySQL melalui JDBC, adalah penting untuk memahami cara mengekod rentetan UTF-8 dengan betul untuk memastikan integriti data dan mengelakkan rasuah aksara. Artikel ini menangani isu biasa pengekodan UTF-8 yang salah, yang membawa kepada teks bercelaru dalam MySQL.

Pernyataan Masalah

Baris yang dimasukkan ke dalam jadual MySQL menggunakan JDBC telah dipaparkan dengan aksara yang salah, menunjukkan "????????" bukannya teks Cyrillic yang dimaksudkan. Masalah ini berterusan walaupun menetapkan "characterEncoding=utf-8" dalam rentetan sambungan dan melaksanakan pernyataan SQL untuk menetapkan set aksara.

Konfigurasi MySQL

Untuk menyelesaikan isu , adalah penting untuk mengesahkan tetapan konfigurasi MySQL. Jalankan arahan berikut untuk menyemak pengekodan aksara dan tetapan penyusunan:

show variables like 'character%';
show variables like 'collation%';

Konfigurasi Sambungan JDBC

Pastikan rentetan sambungan JDBC termasuk pengekodan aksara dan Unicode yang betul tetapan:

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8","user","passwd");

Pernyataan SQL untuk Pengurusan Set Aksara

Secara amnya tidak perlu melaksanakan pernyataan SQL untuk menetapkan set aksara dan pengekodan secara eksplisit. Secara lalai, MySQL menggunakan tetapan yang dikonfigurasikan melalui my.cnf atau my.ini. Walau bagaimanapun, dalam beberapa kes, anda mungkin perlu melaksanakan pernyataan berikut:

<code class="sql">SET NAMES 'utf8';
SET CHARACTER SET 'utf8';</code>

Definisi Jadual Pangkalan Data

Pastikan jadual pangkalan data ditakrifkan dengan aksara yang betul set dan pengekodan:

<code class="sql">CREATE TABLE clt (
  id bigint NOT NULL,
  text varchar(50) NOT NULL
) DEFAULT CHARACTER SET utf8;</code>

Melucutkan Pernyataan SQL yang Tidak Diperlukan

Kod contoh yang diberikan tidak perlu melaksanakan pernyataan SQL untuk menetapkan set aksara. Mengalih keluar pernyataan berikut menyelesaikan isu:

<code class="sql">query = "set character set utf8";
stat.execute(query);</code>

Konfigurasi Sisi Pangkalan Data

Sebagai langkah terakhir, sahkan bahawa konfigurasi sisi pangkalan data sepadan dengan JDBC dan kod tetapan. Ini termasuk mengubah suai my.cnf atau my.ini untuk menetapkan set aksara-pelayan dan parameter sistem fail set aksara yang sesuai.

Dengan mengikuti garis panduan ini, anda boleh memastikan pengendalian rentetan UTF-8 yang tepat dalam MySQL anda pangkalan data melalui JDBC, menghalang teks bercelaru dan mengekalkan integriti data.

Atas ialah kandungan terperinci Mengapakah rentetan Cyrillic saya muncul sebagai \'????????\' dalam pangkalan data MySQL saya walaupun menetapkan `characterEncoding=utf-8` dalam sambungan JDBC saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn