Langkah 1: Mula-mula semak konfigurasi asas kod anda sendiri
1 Adakah anda telah menambah characterEncoding=utf-8, seperti yang ditunjukkan dalam rajah di bawah:
Jika anda mendapati ia tiada, jangan lihat sahaja, tambahkan dengan cepat
2.web Adakah .xml dikonfigurasikan dengan penapis pengekodan, seperti ini Sangat bertimbang rasa)
<!-- 配置编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter>
Langkah 2: Apabila anda mendapati tiada masalah dengan kedua-dua di atas? fail, mari kita lihat fail konfigurasi ini.
Mula-mula log masuk ke pelayan, masukkan pangkalan data anda dan log masuk ke. arahan pangkalan data (nama pangkalan data di bawah merujuk kepada nama pangkalan data yang anda buat, seperti ujian):
mysql - u root -p nama pangkalan dataKemudian laksanakan arahan berikut untuk menyemak format pengekodan pangkalan data andatunjukkan pembolehubah seperti ‘char%’;Ia adalah latin1 yang menyebabkan masalah, jadi bagaimana untuk menyelesaikan masalah ini ? Jangan sabar dan teruskan membaca.
2 Ubah suai fail konfigurasi dalaman mysql
[Teras] Jalankan arahan i untuk memasuki mod penyuntingan, dan tambahkan ayat berikut di bawah [mysqlid], Juga Iaitu, format pengekodan aksara Cina serasi dengan
character-set-server=utf8
: Perintah wq menyimpan dan keluar.
3. Mulakan semula mysql dan anda selesai
systemctl stop mysqld.service systemctl start mysqld.service
Kemudian Anda dengan bangganya boleh log masuk ke mysql dan laksanakan arahan di atas untuk menyemak format pengekodan pangkalan data anda
show variables like ‘char%';
Bukankah ia mengejutkan dan tidak dijangka, hahahaha.
Akhirnya, selepas usaha yang tidak putus-putus, saya akhirnya memasukkan data Cina Hahahaha, saya benar-benar meyakinkan diri saya bahawa saya ingin memindahkan wang kepada diri saya sendiri.
Senario projek
mySql 5.7javaFail konfigurasi: spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/XXX?useSSL=falseKendalian sisip :@Insert("INSERT INTO foods(food_name,food_taste,food_price,food_description) VALUES (#{foodName},#{foodTaste},#{foodPrice},#{foodDescription})") int insert(Food food);
Analisis sebab:
Tetapan untuk menyambung ke pangkalan data memerlukan set aksara
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8&useSSL=false
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah apabila memasukkan data Cina ke dalam mysql menjadi tanda tanya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!