Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mengeksport csv dengan php dan tetapkan pengekodan
Cara untuk menetapkan pengekodan semasa mengeksport csv daripada PHP: 1. Gunakan kaedah iconv untuk menukar kod kandungan yang dieksport daripada utf-8 kepada gb2312 2. Gunakan kaedah mb_convert_encoding untuk menukar pengekodan.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer Dell G3
Cara mengeksport tetapan csv pengekodan dengan php? Eksport kod csv bercelaru di bawah PHP?
Kami pernah menggunakan PHPexcel untuk mengeksport beberapa data kami Memandangkan Phpexcel akan menyebabkan masa tamat dan letupan memori apabila mengeksport lebih daripada 10,000 keping data, kami kemudiannya beralih kepada mengeksport data ke dalam format csv.
Saya percaya ramai rakan telah menghadapi pelbagai masalah bercelaru apabila mengeksport fail csv menggunakan PHP. Saya banyak mencari di Internet dan semua menemui penyelesaian dengan menambahkan BOM. Saya mencuba kaedah ini berkali-kali tetapi ia tidak berfungsi dalam persekitaran ujian dan pengeluaran kami, saya tidak tahu mengapa.
Kemudian, kami menggunakan kaedah iconv untuk menyalin kod kandungan yang dieksport daripada utf-8 kepada gb2312 Keajaiban akhirnya muncul dan ia boleh dipaparkan seperti biasa, bagaimanapun, rakan sekerja mendapati terdapat beberapa bahagian yang hilang data antara lebih daripada 400 keping data yang kami eksport Sepuluh keping data (saya menyalin kod setiap bahagian satu demi satu dan menyambungkannya ke dalam rentetan csv). Jadi saya pergi ke Du Niang untuk mencari masalah kegagalan transcoding iconv, dan mendapati bahawa iconv ternyata mempunyai pepijat Beberapa aksara Cina tidak boleh ditukar Jika mereka tidak boleh ditukar, mereka tidak boleh dilangkau dan mengembalikannya value. Inilah sebab mengapa berpuluh-puluh keping data hilang , dan juga menyediakan kaedah menggunakan mb_convert_encoding untuk menukar. Jadi saya membuat sedikit pengubahsuaian dan menukarnya untuk menggunakan kaedah mb_convert_encoding Ujian pada mesin tempatan adalah seperti berikut:
$str = mb_convert_encoding($str,'gb2312');
Walau bagaimanapun, data yang dieksport dalam talian masih banyak. daripada aksara bercelaru, tetapi ia tidak ditranskodkan sebelum ini. Aksara bercelaru masih berbeza, menunjukkan bahawa kaedah mb_convert_encoding berfungsi. Saya menyemak bahawa kaedah mb_convert_encoding mempunyai tiga parameter $from_encoding Parameter ketiga ialah parameter pilihan Kebanyakan contoh di Internet tidak menggunakan parameter ketiga juga secara lalai. Jadi saya menukarnya kepada
$str = mb_convert_encoding($str,'gb2312','utf-8');
dan mengujinya pada mesin pembangunan tempatan Ia adalah perkara biasa apabila saya mengeluarkannya ke persekitaran pengeluaran, hahaha, semuanya normal.
Mengapa ini? Saya benar-benar tidak mempunyai masa untuk mendalaminya Jika sesiapa tahu, sila beritahu saya
Cadangan kajian: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk mengeksport csv dengan php dan tetapkan pengekodan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!