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 ファイルを認識するには、すべての Unicode ファイルを ZERO WIDTH NOBREAK SPACE 文字で始めることをお勧めします。これは、ファイルで使用されているエンコーディングとバイト順序 (ビッグ エンディアンまたはリトル エンディアン) を識別するための「署名」または「バイト オーダー マーク (BOM)」として機能します。具体的な対応関係を次の表に示します。
?
00 00 FE FF | UTF-32, big-endian |
FF FE 00 00 | UTF-32, little-endian |
FE FF | UTF-16, big-endian |
FF FE | UTF-16, little-endian |
EF BB BF | UTF-8 |
?
BOM は既存の ASCII ファイル構文規則を破るため、Unix 系システムでは使用されません。
実装コード if
<?php $str = "哈,哈,哈,哈"; $fp = fopen("a.csv","a"); //在写入数据之前先把bom头写到文件里 fwrite($fp,"\xEF\xBB\xBF"); //再写入数据 php程序员站 fwrite($fp,$str); phperz.com fclose($fp); phperz.com ?>
注: CSV ファイルを書き込むときは、PHP ソース コードが UTF-8 であり、BOM がなく、何も出力されないことを確認してください。
BOM は実際には非常に厄介です。Web ページ (*.html) に BOM がある場合、IE6.x で開くと魔法のような空白行が表示されますが、Firefox では
?
出典: http://www.i-felix.cn/blog/phpdao-chu-csvwen-jian-luan-ma-wen-ti-jie-jue-fang-fa-gai-si-de-wei -ルアン
?
?