Dalam Laravel, menggunakan Maatwebsite/Laravel-Excel ialah cara yang sangat mudah untuk memproses fail Excel. Walau bagaimanapun, kadangkala apabila fail Excel yang diimport mengandungi bahasa Cina, Laravel gagal memaparkan aksara Cina dalam pangkalan data dengan betul. Artikel ini akan meneroka masalah ini dan menyediakan beberapa penyelesaian.
Penerangan Masalah
Apabila menggunakan Maatwebsite/Laravel-Excel untuk mengimport jadual ke dalam aplikasi Laravel, kadangkala aksara Cina akan bercelaru atau dipaparkan secara tidak betul. Masalah ini biasanya berlaku dalam situasi berikut:
- Ketakpadanan pengekodan pangkalan data: Jika kaedah pengekodan pangkalan data tidak konsisten dengan kaedah pengekodan dalam fail Excel, aksara Cina akan rosak.
- Ralat pengekodan fail Excel: Jika kaedah pengekodan dalam fail Excel tidak konsisten dengan kaedah pengekodan sebenar, aksara Cina juga akan rosak.
Penyelesaian
- Semak pengekodan pangkalan data
Dalam Laravel, pengekodan pangkalan data berkaitan dengan fail AppServiceProvider.php. Anda boleh menetapkan pengekodan pangkalan data dalam fail ini. Jika anda menggunakan pangkalan data MySQL, anda boleh menetapkannya dalam fail ini:
gunakan IlluminateSupportServiceProvider;
gunakan IlluminateSupportFacadesSchema;
kelas AppServiceProvider memanjangkan ServiceProvider
{rr
Dalam kod di atas, kami telah menetapkan pengekodan pangkalan data kepada utf8mb4, menetapkan pengekodan dalam fail supaya sama dengan fail Excel akan menyelesaikan masalah.
Semak pengekodan fail Excel-
Jika kaedah pengekodan dalam fail Excel anda tidak konsisten dengan kaedah pengekodan sebenar, maka masalah aksara Cina bercelaru akan berlaku apabila mengimport . Oleh itu, sebelum mengimport fail Excel, kita perlu memastikan bahawa fail Excel dikodkan dengan betul. Cara mudah ialah:
Sebelum membuka fail Excel, simpan sebagai fail TXT dan kemudian import fail TXT, ini akan memastikan pengekodan adalah betul.
Contohnya:
$reader = MaatwebsiteExcelExcel::load('excel.xls')->toCsv('excel.csv');
$csvData = file_get_contents(' excel .csv');
$csvData = mb_convert_encoding($csvData, 'UTF-8', 'UTF-8');
$csvFile = fopen('excel.csv', 'w');
fwrite($csvFile, $csvData);
fclose($csvFile);
$reader = MaatwebsiteExcelExcel::load('excel.csv')->get();
di Dalam contoh ini, kami menukar fail Excel kepada fail CSV dan kemudian menukarnya kepada pengekodan UTF-8. Sila ambil perhatian bahawa pendekatan ini bukanlah pendekatan terbaik dan anda mungkin perlu membuat lebih banyak pelarasan untuk memastikan ketepatan data anda.
Kesimpulan
Menangani masalah aksara Cina bukanlah satu tugas yang mudah. Walau bagaimanapun, selepas perbincangan dalam artikel ini, kami telah memahami penyelesaian asas. Jika anda masih menghadapi masalah dengan ralat import aksara Cina, sila terus semak pengekodan pangkalan data dan pengekodan fail Excel anda dan buat pelarasan yang diperlukan.
Atas ialah kandungan terperinci laravel import excel Chinese tidak dipaparkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!