Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dengan PDO dan MySQL?

Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dengan PDO dan MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 10:29:30248semak imbas

How to Solve UTF-8 Encoding Issues with PDO and MySQL?

Isu Pengekodan UTF-8 dengan PDO dan MySQL

Apabila menggunakan perpustakaan PHP Data Objects (PDO) dengan pangkalan data MySQL, anda boleh menghadapi masalah dengan pengekodan UTF-8. Data yang dimasukkan ke dalam pangkalan data dalam UTF-8 mungkin muncul sebagai aksara yang rosak, seperti "?????????".

Untuk menyelesaikannya, mengikut garis panduan dalam rangka kerja anda, laksanakan pertanyaan " SET NAMA utf8" dan "SET CHARACTER SET utf8" selepas mewujudkan sambungan PDO. Walau bagaimanapun, jika pertanyaan ini tidak membetulkan isu ini, pertimbangkan penyelesaian berikut:

Penyelesaian:

Tukar data kepada rentetan berkod JSON sebelum memasukkannya ke dalam pangkalan data menggunakan fungsi json_encode. Dapatkan semula data menggunakan json_decode selepas mengambilnya daripada pangkalan data. Pendekatan ini harus menyelesaikan isu pengekodan.

Pendekatan Dioptimumkan:

Untuk PHP versi 5.3.5 dan lebih awal, anda boleh menetapkan set aksara UTF-8 semasa pemulaan sambungan . Ini boleh dicapai dengan kod berikut:

$pdo = new PDO(
    'mysql:host=hostname;dbname=defaultDbName',
    'username',
    'password',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);

Ini memastikan pengekodan UTF-8 dipaksa pada sambungan PDO, menyelesaikan isu pengekodan UTF-8 yang rosak.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu Pengekodan UTF-8 dengan PDO dan MySQL?. 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