2

次のコードを使用する場合:

$myString = 'some contents';    
$fh=fopen('newfile.txt',"w");
fwrite($fh, "\xEF\xBB\xBF" . $myString);

PHP関数を使用して最初にテキスト(例では$ myString)をエンコードする意味はありますか?たとえば、実行中utf8_encode($myString);または同様のiconv()コマンドのように?

BOMが最初にファイルに入力され、UTF8が世界中のほぼすべての文字を表すと仮定すると、\xEF\xBB\xBFこの方法でファイルを作成するという潜在的な失敗のシナリオは見当たりません。言い換えれば、主要なテキストエディタが、新しく作成されたファイルを正しく解釈できず、すべての文字を意図したとおりに表示できない場合はありません。これは、HTMLフォームからの$myStringPHP変数であってもです。$_POST私は正しいですか?

4

2 に答える 2

1

ソースファイルがUTF-8エンコードされている場合は、文字列$myStringUTF-8エンコードされているため、変換する必要はありません。それ以外の場合はiconv()、ファイルに書き込む前に、まずエンコーディングを変換するためにを使用する必要があります。

また、noteutf8_encode()はISO-8859-1文字列をUTF-8にエンコードするために使用されます。

于 2012-09-26T10:48:49.510 に答える
0

エンコードされた文字列utf8_encodeのみを変換することに注意してください。ISO-8859-1

一般に、PHPは256文字の文字セットしかサポートしていないため、UTF-8に書き込む前に、非ASCII文字を含む文字列をutf-8でエンコードする必要があります。

BOMはオプションです(ほとんどのテキストファイルリーダーは、ファイルのエンコードをスキャンするようになりました)。

ウィキペディアから

Unicode標準はUTF-8でのBOMを許可しますが[2]、その使用を要求または推奨していません。

于 2012-09-26T10:58:53.147 に答える