4

htmlspecialchars($var)私のプロジェクトが全体で utf-8 であり、常に utf-8 エンコーディングで使用されていると仮定すると、出現するすべてのtoを変更すると壊れる可能性のある合法的なものはありhtmlspecialchars($var, ENT_QUOTES, 'utf-8')ますか?

私は 1 つのことを知っています: 明らかに、一重引用符もエスケープするという点でENT_QUOTESとは異なります。ENT_COMPATこれだけで何も壊れないことがわかっているとしたら、他に何か残っていますか?

別の表現:

charset パラメーターを使用した場合のhtmlspecialchars()とは異なるcharset からのデータのみが与えられた場合、 charset パラメーターなしで使用した場合のhtmlspecialchars()の考えられる結果はありますか?

(いつでもhtmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES) !== htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES, 'utf-8')ですか?)

私の理解では、決してノーと言っています。ここでのstackoverflowに関する別の質問も、いいえを示唆しています。これまでのところ、変更を加えたプロジェクトのサンドボックスをブラウジングしても「いいえ」と表示されます。ただし、何かを見落としているかどうかはわかりません。

4

2 に答える 2

5

他の質問のPHPマニュアルからの引用は、間違いなく答えていると思います:

この関数の目的では、文字セット ISO-8859-1、ISO-8859-15、UTF-8、cp866、cp1251、cp1252、および KOI8-R は事実上同等です。これらすべての文字セットの位置。

" & >など、それぞれのエンコーディングですべて同じコードを持ち、UTF-8 文字は必要な場合にのみ複数バイトを占有するため、UTF-8 でも 1 バイトしか必要としません。したがって、これまで ISO-8859-1 で UTF-8 データを処理していたとしても、明示的な UTF-8 入力に切り替えると出力は同じになります。

于 2010-01-07T20:04:45.543 に答える
-1

いいえ、違いはありません。文字セットを提供しなければ、PHP がそれを推測し、UTF-8 を使用するからです。

于 2010-01-07T20:03:13.030 に答える