ホームページ  >  記事  >  バックエンド開発  >  Mac で PHP が文字化けした CSV を生成する

Mac で PHP が文字化けした CSV を生成する

不言
不言オリジナル
2018-04-24 09:20:001942ブラウズ

この記事では主に、Mac で php を使用して文字化けした CSV ファイルを生成する方法を紹介します。必要な方は参考にしてください。 phpメソッドでCSVファイルをエクスポートすると文字化けする問題



この質問について話す前に、まずCSVファイルとは何なのかについて話しましょう。 Comma Separator Value (カンマ区切り値) もあります。 Mysql から CSV へのデータのエクスポートや SqlServer への CSV のインポートなど、データ変換によく使用される中間ファイルが存在します。 Linux で PHP スクリプトを使用して、条件に従って Mysql データベースからテーブル データを csv にエクスポートします。 CSV ファイルを開くと、中身の中国語が文字化けします (Windows の CSV ファイルは Microsoft Excel に関連付けられています)。 Notepad++ または Word を使用すると正常に開きますが、レイアウトが乱雑になります。理由: BOM が問題を抱えており、Microsoft も問題を抱えています。 BOMとは何ですか? Byte Order Mark(ビットオーダーマーク)もあります。

Unicode ファイルを識別するために、Microsoft では、すべての Unicode ファイルが ZERO WIDTH NOBREAK SPACE 文字で始まることをお勧めします。これは、ファイルで使用されているエンコーディングとバイト順序 (ビッグ エンディアンまたはリトル エンディアン) を識別するための「署名」または「バイト オーダー マーク (BOM)」として機能します。具体的な対応関係を次の表に示します。



バイトエンコード形式


00 00 FE FF

UTF-32、ビッグエンディアン

FF FE 00 00UTF-32、リトルエンディアンUTF-16、ビッグエンディアンUTF-16、リトルエンディアン注: csv ファイルを記述するときは、php ソース コードが utf-8 であり、BOM がなく、何も出力されないことを確認してください。
FEFF
FF FE
EF B OM、これは既存の ASCII ファイル構文規則に違反するためです。
実装コード if



Excel が csv を読み取るとき、ファイル ヘッダーに BOM 情報がない場合は、デフォルトで Unicode エンコードで読み取られます。 (この BOM は、Microsoft 自身が定義したファイル ヘッダー プロトコルです。その名前が示すように、ファイル ヘッダーに保存されます。保存される内容は、ファイルのエンコーディングを識別する情報です。)

CSV の生成に使用するプラットフォームは、 Microsoft の BOM プロトコルに従う必要があるため、Unicode 以外のエンコード (utf-8 など) の CSV ファイルを出力し、BOM 情報が生成されない場合、Excel は自動的に Unicode エンコードに従ってそれを読み取ってしまい、文字化けが発生します。 。

これをマスターした後は、文字化けによって前進を妨げられることはもうないと思います。非 Unicode でエンコードされた csv ファイルをテキスト エディター (notepad++ を推奨) で開き、BOM (特定のエンコード方法はオプションです)、問題は解決されました。

関連する推奨事項:

PHP は一意の RequestID クラスを生成します


php で .csv サフィックス ファイル テーブルを生成する方法の詳細な例


以上がMac で PHP が文字化けした CSV を生成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。