$_REQUEST の文字セットを知るにはどうすればよいですか? また、$_REQUEST の文字セットを設定するにはどうすればよいでしょうか?
ベストアンサー1
簡単に言うと、GET または POST 経由で PHP スクリプトに渡される変数で使用されるエンコーディング (文字セット) については実際にはわかりません (特に GET はここで問題になります)。慣例により、ブラウザーは-meta タグ ( HTML5 では -meta タグ) または HTTP ヘッダーaction
経由で指定できるページ エンコーディングを使用して、-attributeで指定されたサーバー側リソースにフォームを POST します。また、一部のブラウザーでは、正しいエンコーディングを選択する際にフォームの -attributeも考慮します。http-equiv
charset
accept-charset
GET パラメータと URL 自体のエンコードはブラウザの設定に依存するため、ユーザーが制御できます。特定のエンコードに依存しないでください。
一般的に、すべてのものに一貫して UTF-8 を使用し、HTTP ヘッダー ( Content-Type: text/html; charset=UTF-8
) に正しいエンコーディングを指定することにより、ほとんどのエンコーディング関連の問題を回避できます。これにより、文字列に渡されるすべての変数に正しいエンコーディング (UTF-8) が設定されます (スクリプトへの攻撃ベクトルを可能にするために故意にエンコーディングを変更しようとする不正なスクリプトについては言及していません)。また、GET パラメーターまたは URL で非 ASCII 文字に依存しないでください (これは、SEO フレンドリーなリンクがそれらの文字を削除したり、置き換えたりする理由でもあります)。
許可されている文字セットが UTF-8 のみであることを確認した場合は、mb_strlen($string, 'UTF-8')
たとえば変数の長さを確認するために使用できます。
編集: (いくつかのリンクを追加しました)
読んでいただきたい内容: