私はGETで送信されたクエリワードをユーザーが入力する検索スクリプトを用意しています。ユーザ入力が特殊文字を含む場合。 äpple
URLはsearch.php?q=äpple
になり、すべて正常に動作します。しかし、ユーザーがこのURLを再度実行した場合、search.php?q=äpple
ブラウザアドレスフィールドにsearch.php?q=%E4pple
が表示され、クエリが失敗します。その文字列をどのようにデコードする必要がありますか? urldecode
が機能しませんでした。私はこれがまさにそうだと思ったので、何か間違っていますか?または、他のどの機能を試すことができますか?ユーザー入力を特殊文字でデコード
UPDATE 私はsearch.php?q=%E4pple
にはutf8_encodeを使用する場合には、右のä
文字を生成しますが、URLの文字列がすでにä
GETにより送信されたため、正しく(と作業)されている場合、はutf8_encodeはそれを台無しに。
私は何かをする前にエンコードをチェックしていたのですが、それは簡単な方法ではありませんか?
phpがこれを行うので、これを解読してはいけません。 Btw、あなたのページエンコーディングは何ですか? – zerkms
okありがとう、utf-8と通常のquestionmarkboxが表示されますが、それ以外はすべて動作します。つまり、ブラウザのURLに特別な文字列を含む特別な検索クエリを使用してスクリプトを実行している場合、ブラウザでURLがエンコードされた同じURLでページを再実行します(質問を参照) phpはデコードを処理する必要があるので動作するはずですか? – Joseph
ブラウザ**常に**非ASCII文字をエスケープシーケンスとして送信します。したがって、たとえそれがクエリ文字列で 'ä 'であったとしても、ブラウザはそれを'%nnnn'として送信しました(あなたのウェブサーバアクセスログを見て確認できます) – zerkms