Pengekodan Aksara Pangkalan Data Tidak Padan dengan JDBC
Apabila bekerja dengan kebolehkendalian merentas pangkalan data, keserasian pengekodan aksara memainkan peranan penting. Dalam senario khusus ini, aplikasi Web Java menggunakan GlassFish 3, JPA dan MySQL menghadapi isu pengekodan aksara. Khususnya, medan String yang disimpan menggunakan kaedah kemas kini() JPA mempamerkan kerosakan data, memaparkan '?' bukannya aksara tertentu.
Walaupun pelayan, halaman dan pangkalan data dikonfigurasikan untuk menggunakan UTF-8, puncanya terletak di tempat lain. JDBC (Java Database Connectivity), bukan JPA, menentukan pengekodan aksara yang digunakan semasa menyambung ke pangkalan data. Oleh itu, memastikan bahawa rentetan sambungan JDBC termasuk pengekodan aksara yang betul adalah penting.
The sintaks yang sesuai untuk rentetan sambungan MySQL, seperti yang dicadangkan dalam penyelesaian yang disediakan, ialah:
jdbc:mysql://localhost:3306/administer?characterEncoding=utf8
Dengan menyatakan secara eksplisit pengekodan aksara dalam JDBC, sambungan akan menggunakan UTF-8, yang sepadan dengan pangkalan data , pelayan dan pengekodan halaman. Ini memastikan perwakilan aksara yang konsisten, mencegah rasuah data dan penggantian aksara tertentu dengan '?'.
Atas ialah kandungan terperinci Mengapa Medan Rentetan Saya Menunjukkan \'?\' Daripada Aksara dalam Senario Kebolehkendalian Merentas Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!