5

私が推測するように、ファイルには次のエンコーディングがあることはほとんどの人が知っています。

  • ANSI
  • UTF-8

UTF-8 は、ファイルの先頭に 3 つの文字を追加することで認識されますが、ご存知のように、これらの文字は PHP 言語で問題を引き起こします。

  • BOM なしの UTF-8 (UTF-8 の代わり)

ここに私の質問があります: frwite() または他の関数を使用して (BOM なしの UTF-8) のエンコーディングで (PHP を使用して) 新しいファイルを作成するにはどうすればよいですか (問題ありません)。

(エディターの設定について質問しているわけではありません > php 関数でファイルを作成することについて質問しています)

4

4 に答える 4

2

質問で UTF-8 と ANSI の両方を誤って伝えていることを残念に思います。

UTF-8 では、先頭に BOM を付ける必要はありません。「BOM なしの UTF-8」エンコーディングなどのエンコーディングはありません。「UTF-8」しかありません。私は何百万もの (確かに何十万もの) UTF-8 ファイルを処理してきましたが、最初に BOM に遭遇したことは一度もありません。

Unicode 標準によると、 UTF-8 ではBOM は必須でも推奨されていません。

2.6 エンコーディングスキーム

BOM の使用は、UTF-8 では必須でも推奨でもありませんが、BOM を使用する他のエンコード形式から UTF-8 データが変換されるコンテキスト、または BOM が UTF-8 署名として使用されるコンテキストで遭遇する可能性があります。詳細については、セクション 16.8, Specialsの「Byte Order Mark」サブセクションを参照してください。

また、「ANSI」などのエンコーディングはありません。

IANA が提供する文字セット名として "ANSI" に最も近いものは、"ANSI_X3.4-1968" と "ANSI_X3.4-1986" であり、どちらも "US-ASCII" (推奨される MIME 名) の単なるレガシー エイリアスです。 )、128 コード ポイントの 7 ビット エンコード。名前に「ANSI」を含む公式の文字セット名は他にありません。

どのような環境で運用されているかはわかりませんが、非常に非標準的な命名、期待、および標準に導かれたようです。

ひょっとして…Windows™?☹</p>

編集:このミソニムのソースについて、この回答が見つかりました。

于 2010-10-31T16:01:29.973 に答える
0

でファイルを作成しPhP、通常のテキストを追加するだけです。わたしにはできる。

/*creating the page account.php*/

$archivo="account.php";

$myFile = "$archivo";
$fh = fopen($myFile, "wb") or die("can't open file");
fwrite($fh,"$archivo");//In this case I am writing the name of the file inside of it.
fclose($fh);    
于 2015-06-29T04:31:26.063 に答える
-1

「BOM なし」の場合は、ファイル内の通常のバイトです。

それらはすべて、ファイル内のバイト シーケンスとして、0 から 255、または 0x00 から 0xFF の単なる数字です。それらをどのように解釈するかは、あなたまたはプログラム次第です。

于 2010-10-30T13:41:34.057 に答える
-3

これに対する解決策を見つけました。ファイルを開く/作成し、これを使用して、UTF8 として設定するために署名を先頭に書き込むことができます。

$fp = fopen("filename.ext","wb");
fwrite($fp,pack("CCC",0xef,0xbb,0xbf));

私はこれを調査しましたが、うまくいきました!

ここで見つけました

于 2012-04-20T17:33:46.413 に答える