0

中华武魂私のウェブサイトを介してデータを取得するリクエストを投稿するときのように、データベースにある文字列を持っています。データを次の形式でサーバーに取得しています%E4%B8%AD%E5%8D%8E%E6%AD%A6%E9%AD%82

使用可能な形式に戻すには、どのようなデコード手順を実行する必要がありますか? また、ユーザー入力をクリーンアップして、SQL インジェクション攻撃を試みないようにしますか? (エンコード前またはエンコード後のエスケープ文字列?)

編集:

 rawurldecode();  // returns "ä¸­åŽæ­¦é­‚"
 urldecode();     // returns "ä¸­åŽæ­¦é­‚"


public function utf8_urldecode($str) { 
    $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str)); 
    return html_entity_decode($str,null,'UTF-8'); 
}
 // returns "ä¸­åŽæ­¦é­‚"

... SQLステートメントで試して使用すると実際に機能します。

echoUTF-8のヘッダーを指定せずにandを実行していたためだと思いますdie(); (したがって、ラテン語として読んでいたと思います)

助けてくれてありがとう!

4

2 に答える 2

2
于 2011-01-29T18:59:09.797 に答える
1

PHP の urldecode を使用します: http://php.net/manual/en/function.urldecode.php

ここで選択肢があります:urldecodeまたはrawurldecode.

を使用して文字列をエンコードした場合は、スペースの処理方法のために をurlencode使用する必要があります。はスペースを に変換しますがurldecode、とは異なります。urlencode+rawurlencode

于 2011-01-29T19:00:42.900 に答える