Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menyelesaikan masalah aksara kacau yang dieksport oleh php xls

Bagaimana untuk menyelesaikan masalah aksara kacau yang dieksport oleh php xls

PHPz
Lepaskan: 2023-04-26 14:08:31
asal
2206 orang telah melayarinya

Dalam proses pembangunan php, kita selalunya perlu menggunakan fungsi eksport excel. Walau bagaimanapun, anda mungkin menghadapi masalah biasa semasa mengeksport, iaitu, fail excel yang dieksport kelihatan bercelaru. Sebagai tindak balas kepada situasi ini, artikel ini akan memperkenalkan cara menyelesaikan masalah aksara bercelaru yang dieksport daripada php xls.

1. Analisis Punca

Apabila mengeksport php excel, sebab utama aksara bercelaru adalah seperti berikut:

1 Isu pengekodan: fail dan program excel yang dieksport Pengekodan yang digunakan dalam adalah tidak konsisten, mengakibatkan aksara bercelaru; proses eksport Pengendalian fail excel yang tidak betul juga boleh membawa kepada aksara yang bercelaru.

2. Penyelesaian

1. Pengekodan bersatu

Apabila menggunakan php untuk mengeksport excel, anda perlu memastikan bahawa pengekodan fail excel yang dieksport adalah konsisten dengan pengekodan yang digunakan dalam program tersebut. Anda boleh menggunakan fungsi iconv atau mb_convert_encoding untuk menukar pengekodan rentetan bagi memastikan data ditukar dengan betul antara pengekodan yang berbeza dan mengelakkan aksara yang bercelaru. Contohnya, jika anda mengeluarkan set data daripada pangkalan data, anda perlu menukarnya kepada pengekodan UTF-8 dan menentukan pengekodan output sebagai UTF-8 semasa proses eksport:

2. Gunakan fungsi htmlentities
header("Content-type:text/html;charset=utf-8");
$data = array(); // 数据集
// 从数据库中获取数据集
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$pdo = new PDO($dsn, 'root', '');
$stmt = $pdo->query('SELECT * FROM user');
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 将数据集转为UTF-8编码
foreach ($data as &$row) {
    foreach ($row as $key => &$value) {
        $value = mb_convert_encoding($value, 'UTF-8', 'auto');
    }
}
unset($row);
// 导出Excel文件
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setTitle('title'); // 指定Excel文件标题
$objPHPExcel->getActiveSheet()->fromArray($data); // 将数据集导入Excel表格
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
header('Content-Disposition: attachment;filename="example.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
Salin selepas log masuk

Apabila mengeksport fail excel, apabila data mengandungi aksara khas html seperti ">, <, ruang, dsb., anda boleh menggunakan fungsi htmlentities untuk menambah aksara melarikan diri di hadapan aksara khas ini. Contoh kod adalah seperti berikut:

3 Nyatakan format output
$data = array( 
    array("name", "gender", "age", "info"), 
    array("张三", 1, 18, "hello world"), 
    array("李四", 0, 20, "2021/06/23"), 
);
//遍历数据,将特殊字符进行转义
foreach($data as &$row){
    foreach($row as &$cell){
        $cell = htmlentities($cell, ENT_COMPAT, &#39;UTF-8&#39;);
    }
}
unset($cell);
unset($row);
//将数据写入到Excel文件中
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->fromArray($data, NULL, 'A1');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="example.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');</p>
<p> Apabila mengeksport excel dengan PHP, anda juga boleh menentukan format output untuk menyelesaikan masalah bercelaru. . Contohnya, apabila mengeksport fail excel dengan PHPExcel, anda boleh menetapkan fail tersebut ialah UTF-8 (ditentukan melalui kaedah $pdf->setUTF8(true)) untuk mengelakkan aksara bercelaru yang disebabkan oleh masalah pengekodan adalah seperti berikut: </p>
<p></p>3 Kesimpulan<pre class="brush:php;toolbar:false">$data = array( 
    array("name", "gender", "age"), 
    array("张三", 1, 18), 
    array("李四", 0, 20), 
);
//将数据写入到Excel文件中
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->fromArray($data, NULL, 'A1');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->setUseUTF8(true); // 设置文件格式为UTF-8
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="example.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
Salin selepas log masuk

Watak bergolak adalah masalah yang sangat biasa apabila mengeksport daripada php Dalam operasi tertentu, untuk set data dan persekitaran program yang berbeza, adalah perlu untuk memilih kaedah yang sepadan untuk menyelesaikan masalah aksara bercelaru untuk memastikan kualiti dan kebolehgunaan fail excel akhir yang dieksport

.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara kacau yang dieksport oleh php xls. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan