PHPは、解釈する.phpファイルのエンコーディングをどのように認識しますか?
つまり、.phpファイルはUTF-8やCP 1252などでエンコードできます。これは、文字列リテラルなどに影響します。
php.iniに1つの設定がありますか?または、PHPはエンコーディングを自動的に決定しようとしますか(たとえば、有効なUTF-8がない場合はCP 1252を想定します...)?
説明ありがとうございます!
PHPは、解釈する.phpファイルのエンコーディングをどのように認識しますか?
つまり、.phpファイルはUTF-8やCP 1252などでエンコードできます。これは、文字列リテラルなどに影響します。
php.iniに1つの設定がありますか?または、PHPはエンコーディングを自動的に決定しようとしますか(たとえば、有効なUTF-8がない場合はCP 1252を想定します...)?
説明ありがとうございます!
PHPソースコードは、ソースエンコーディングについて何も想定していません。すべてがバイナリとして扱われます。これは、エディターがファイルをCP-1252として保存する場合(私はそうしないことを望んでいます)、エコーする文字列もCP-1252であることを意味します。
ファイルのエンコーディングは、その中の文字列リテラルとはほとんど関係がありません。PHPに関する限り、文字列は単なるバイトシーケンスであり、それ以上のデータは保存されません。utf-8文字列をiso-8859-15ファイルに含めた場合でも、それはutf-8文字列のバイトになります。これらは単なるバイトであるため、同じファイル内の文字列にさまざまなエンコーディングを自由に混在させることができます(ただし、どのエディタでも奇妙に見えます)。
おそらく、ファイルのエンコーディングを定義するのではなく、文字列を処理および出力する方法を定義することを検討しているでしょう。default_charset
ini-settingを使用して、ヘッダーとして出力するもの(おそらく必要なもの)を定義でき、内部mb_
関数がリッスンしmbstring.internal_encoding
ます。
通常のスキャナー( CP936 zend.multibyte
、Big5、CP949、Shift_JISなど)と互換性のない別のエンコードでファイルを実際にスキャンできるはずです。これは、ini設定で構成して、を支援できますが、declare(encoding='name')
非常に疑わしいです。これはあなたが探しているものです。私はまだその機能をテストしていません、そしてそれのドキュメントは次に存在しません。