ホームページ バックエンド開発 PHPチュートリアル UTF-8でエンコードされたCSVファイルをExcelで開くとPHPで文字化けが発生する問題を解決しました。

UTF-8でエンコードされたCSVファイルをExcelで開くとPHPで文字化けが発生する問題を解決しました。

Jun 13, 2016 pm 01:13 PM
200 array bom vb

UTF-8でエンコードされたCSVファイルをExcelで開くとPHPで文字化けが発生する問題を解決

が を書きました
実は、この問題はずっと前に発生していて、その時は openoffice は正常に開いていましたが、その後 Excel が異常に開いたので、解決するしかありませんでした。エンコード。

今回もこの問題に遭遇しました。ネットで調べたところ、出力された CSV ファイルに BOM がなかったことが原因でした。 BOM とは何ですか?

UCSエンコードには「ZERO WIDTH NO-BREAK SPACE」という文字があり、そのエンコードはFEFFです。 FFFE は UCS には存在しない文字ですので、実際の送信では出現しないはずです。 UCS 仕様では、バイト ストリームを送信する前に文字「ZERO WIDTH NO-BREAK SPACE」を送信することを推奨しています。このように、受信機が FEFF を受信した場合は、バイト ストリームがビッグ エンディアンであることを示し、FFFE を受信した場合は、バイト ストリームがリトル エンディアンであることを示します。したがって、「ZERO WIDTH NO-BREAK SPACE」という文字は BOM とも呼ばれます。
UTF-8 では、バイト順序を示すために BOM は必要ありませんが、BOM を使用してエンコード方式を示すことができます。文字「ZERO WIDTH NO-BREAK SPACE」の UTF-8 エンコーディングは EF BB BF です。したがって、受信側が EF BB BF で始まるバイト ストリームを受信すると、それが UTF-8 でエンコードされていることを認識します。
Windows は、BOM を使用してテキスト ファイルのエンコーディングをマークします。

では、PHP で BOM を出力するにはどうすればよいでしょうか?

すべてのコンテンツが出力される前

print(chr(0xEF).chr(0xBB).chr(0xBF));
?
?
<?php

function writeCsvToFile($file,array $data){
	$fp = fopen($file, 'w');
	
	//Windows下使用BOM来标记文本文件的编码方式
	fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));
	
	foreach ($data as $line) {
		fputcsv($fp, $line);
	}
	
	fclose($fp);
}

$file = "./testcsv.csv";
$data = array(
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
	array(1,'色色',12345,'vb200'),
);

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

vb はどのプログラミング言語に属しますか? vb はどのプログラミング言語に属しますか? Jul 05, 2023 pm 02:14 PM

VB は、高級プログラミング言語です。一般的なオブジェクトベースのプログラミング言語です。構造化されたモジュール式のオブジェクト指向のビジュアル プログラミング言語であり、開発環境を支援するイベント駆動メカニズムが含まれています。直感的なグラフィカル ユーザー インターフェイス デザインを採用しており、コントロールのドラッグ アンド ドロップ、プロパティの設定、イベント ハンドラーの作成によってアプリケーションを開発できます。このビジュアル プログラミング手法により、開発者はコーディング経験が少なくてもインターフェイスを直感的に設計およびプログラミングできます。

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

タイトル: Array.Sort 関数を使用して C# で配列を並べ替える例 本文: C# では、配列は一般的に使用されるデータ構造であり、多くの場合、配列を並べ替える必要があります。 C# には Array クラスが用意されており、このクラスには配列を簡単に並べ替えるための Sort メソッドがあります。この記事では、C# で Array.Sort 関数を使用して配列を並べ替える方法を示し、具体的なコード例を示します。まず、Array.Sort 関数の基本的な使用法を理解する必要があります。 Array.So

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関数が用意されていますが、配列内に同じキーが存在する場合、この関数は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関数を言語で提供し、プログラム設計をより柔軟にします。配列マージ

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP には、配列操作をより便利かつ高速にする強力な配列関数が多数あります。 2 つの配列を結合して連想配列にする必要がある場合、PHP の array_combine 関数を使用してこの操作を実行できます。この関数は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結合するために使用されます。次に、PHP の array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法を説明します。 array_comb について学ぶ

dom オブジェクトと bom オブジェクトとは何ですか? dom オブジェクトと bom オブジェクトとは何ですか? Nov 13, 2023 am 10:52 AM

DOM オブジェクトは「ドキュメント」、「要素」、「ノード」、「イベント」、「ウィンドウ」の 5 つ、2.「ウィンドウ」、「ナビゲーター」、「場所」、「履歴」、「画面」、その他 5 つです。 BOM オブジェクト。

vb で int は何を意味しますか vb で int は何を意味しますか Dec 03, 2020 am 09:48 AM

VB の Int は、整数を受け取る関数を指します。その構文は "int(x)" などで、x 以下の最大の整数を取ることを意味します。int 関数に似た関数には、小数点を削除する Fix 関数が含まれます。部分を取り、残りの次の整数を返します。

ボムとドムの違いは何ですか ボムとドムの違いは何ですか Nov 13, 2023 pm 03:23 PM

BOM と DOM は、役割と機能、JavaScript との関係、相互依存性、さまざまなブラウザーの互換性、セキュリティ上の考慮事項の点で異なります。詳細な紹介: 1. 役割と機能: BOM の主な機能はブラウザ ウィンドウを操作することであり、ブラウザ ウィンドウへの直接アクセスと制御を提供しますが、DOM の主な機能は Web ドキュメントをオブジェクト ツリーに変換し、開発者は、このオブジェクト ツリーを使用して Web ページの要素やコンテンツを取得および変更します。 2. JavaScript などとの関係

PHPのarray_fill()関数の使い方の詳しい説明 PHPのarray_fill()関数の使い方の詳しい説明 Jun 27, 2023 am 08:42 AM

PHP プログラミングにおいて、配列は大量のデータを簡単に処理できる非常に重要なデータ構造です。 PHP は配列関連の関数を多数提供しており、array_fill() はその 1 つです。この記事では、array_fill() 関数の使い方と実際の応用におけるヒントを詳しく紹介します。 1. array_fill() 関数の概要 array_fill() 関数の機能は、同じ値で構成される指定された長さの配列を作成することです。具体的には、この関数の構文は次のとおりです。

See all articles