現在の位置: ホーム> 最新記事一覧> FPUTCSVを使用してCSVファイルを保存する場合、文字化けコードを回避するためにファイルエンコード形式を制御する方法は?

FPUTCSVを使用してCSVファイルを保存する場合、文字化けコードを回避するためにファイルエンコード形式を制御する方法は?

M66 2025-06-22

1。FPUTCSV関数の概要

PHPのFPUTCSV関数は、データの配列をCSVファイルに書き込むために使用されます。これは、CSVファイルの生成と書き込みを処理するための一般的な機能です。 FPUTCSVの基本的な構文は次のとおりです。

 fputcsv($file, $fields, $delimiter = ',', $enclosure = '"', $escape_char = '\\');

パラメーター$ファイルはファイルハンドル、 $フィールドは書き込みの配列、 $ delimiterはデリミッター、デフォルトはコンマ、 $エンクロージャーはフィールドを取り巻く文字、デフォルトは二重引用符、 $ escase_charはエスケープ文字です。

2。一般的な文字化けの問題

WindowsやLinuxなどの複数のオペレーティングシステムでCSVファイルを開くと、文字化けの問題に遭遇する可能性があります。これは、異なるオペレーティングシステムとアプリケーションで使用される一貫性のないデフォルト文字エンコーディングによるものです。たとえば、WindowsはデフォルトでGBKまたはWindows-1252エンコードを使用しますが、LinuxとMacosはUTF-8エンコーディングでより一般的に使用されます。

3.エンコード形式を制御する戦略

3.1 MB_CONVERT_ENCODINGを使用してエンコードを変換します

ファイルを異なる環境で正しく表示できるようにするために、 MB_CONVERT_ENCODING関数を使用して、 FPUTCSVを使用してデータを書き込む前に、データを統合されたエンコード形式に変換できます。通常、UTF-8エンコーディングを使用することをお勧めします。

 // データが中国人であると仮定します
$data = ['名前', '年', '市'];
$data = array_map(function($value) {
    return mb_convert_encoding($value, 'UTF-8', 'auto'); // 自動的に識別して変換します UTF-8
}, $data);

$file = fopen('output.csv', 'w');
fputcsv($file, $data);
fclose($file);

この方法により、CSVファイルの各列の内容がUTF-8でエンコードされることを保証し、したがって、文字化けの問題を回避します。

3.2 UTF-8エンコーディングをサポートするためにBOMヘッダーを設定します

UTF-8エンコードされたファイルは、Excelなどの特定のプログラムによってエンコードされたANSIと誤って認識されることがあります。この問題を解決するために、ファイルの先頭にUTF-8(バイトオーダーマーカー)のBOMを追加できます。これにより、ファイルがExcelで正しく表示されることが保証されます。

 $file = fopen('output.csv', 'w');

// に追加 BOM 頭
fwrite($file, "\xEF\xBB\xBF");

$data = ['名前', '年', '市'];
fputcsv($file, $data);

fclose($file);

3.3 Excelのデフォルトエンコードを変更します

場合によっては、ExcelがCSVファイルを開いたときにエンコードメソッドを直接設定できます。この方法は必ずしもすべてのシナリオに適用されるわけではありませんが、Carled Codeの問題を解決するための代替手段です。これは、CSVファイルのURLでエンコード形式を指定することで実行できます。

 $fileUrl = 'http://m66.net/downloads/csv/output.csv';

もちろん、この方法は、ファイルがURLの形式で直接ダウンロードされる場合に適しており、ユーザーはダウンロードプロセス中にエンコーディング方法を指定します。

3.4特定のエンコード形式への力出力

場合によっては、CSVファイルを指定されたエンコード形式(GBKなど)にエクスポートする必要があります。各行のデータは、書き込む前にmb_convert_encodingを介してターゲットエンコード形式に変換できます。

 $data = ['名前', '年', '市'];
$data = array_map(function($value) {
    return mb_convert_encoding($value, 'GBK', 'UTF-8'); // 意思 UTF-8 に頼ります GBK
}, $data);

$file = fopen('output.csv', 'w');
fputcsv($file, $data);
fclose($file);

この方法は、中国のWindows Systemsでの使用に適しており、デフォルトでGBKエンコードを使用してExcelを使用して原因となるCarled Codeを防ぎます。

4。概要

エンコーディングの問題に遭遇することは、PHPのFPUTCSV関数を使用する場合に一般的な課題です。ファイルエンコード形式を制御し、ファイルが異なるシステムとアプリケーションで正しく表示されるようにし、文字化けコードを回避することにより、次の方法を使用できます。

  • MB_CONVERT_ENCODINGを使用して、データを統一エンコード形式に変換します。

  • UTF-8 BOMヘッダーを追加して、ExcelがUTF-8エンコーディングを正しく認識していることを確認します。

  • ニーズに応じてGBKなどのさまざまな文字エンコーディングを選択して、さまざまなオペレーティングシステムに適応します。

  • 部分的な互換性の問題を回避するために、URLにエンコードメソッド( M66.NETなど)を直接指定します。

これらの手法を通して、CSVファイルをエクスポートするときに、文字化けしたコードの問題を回避し、ユーザーエクスペリエンスを改善できます。