PHP は、Web 開発で広く使用されているスクリプト言語で、柔軟性と操作性に優れていますが、Excel ファイルをエクスポートする際に文字化けが発生するなど、開発者にとって不便な問題が発生することがあります。そこで、この記事では、この問題を詳しく掘り下げ、この厄介な問題を簡単に解決できるようにいくつかの解決策を提供します。
Excel ファイルは、HTML や JSON のようなテキストではなく、バイナリ形式で保存されます。したがって、Excel ファイルの読み取りおよび書き込みを行う場合は、ファイルのエンコード方法に特別な注意を払う必要があります。最も一般的なエンコーディングは UTF-8 と GBK です。
UTF-8 は現在最も一般的に使用されているエンコード方式で、複数の言語と文字セットをサポートしており、国際的なアプリケーションに特に適しています。 GBK は中国語のエンコード方式で、その文字セットには簡体字中国語と繁体字中国語の文字のみが含まれます。
PHP を使用して Excel ファイルをエクスポートする場合、スクリプト ファイルと Excel ファイルの両方で同じエンコード方式です。 PHP 組み込み関数 mb_convert_encoding() を使用して、コンテンツをあるエンコーディングから別のエンコーディングに変換できます。
たとえば、PHP で UTF-8 エンコードを使用し、Excel ファイルで GBK エンコードを使用している場合、次のようにコンテンツを GBK エンコードに変換できます。
$data = mb_convert_encoding($data, "GBK", "UTF-8");
PHPExcel ライブラリの setCellValueExplicit() メソッドを使用して、Excel セル内のテキストを次のように設定することもできます。指定されたエンコード方法:
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '中国語コンテンツ', PHPExcel_Cell_DataType::TYPE_STRING,'GBK');
#正しい HTTP ヘッダーを使用してエンコードを設定する
header(' Content-Disposition:attachment;filename="example.xls"');
header('Cache-Control:max-age=0');
サポートされていない文字の使用を避ける
PHPExcel ライブラリの使用
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Name');
$objPHPExcel->getActiveSheet()->setCellValue('B1', '性別');
$objPHPExcel->getActiveSheet()->setCellValue('A2', 'Zhang San');
$objPHPExcel->getActiveSheet()->setCellValue('B2', '男性' ) ;
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="example.xls"');
$objWriter = PHPExcel_IOFactory : :createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
結論
以上がExcelではPHPがどこでも文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。