2011-11-07 25 views
0

これはAJAXから$ _GETを経由して、元の文字列異なる結果が

Apple iPad 2 16GB Wifi + 3G (AT&T) 

JS encodeURI()PHPのurldecode()の後に

Apple%20iPad%202%2016GB%20Wifi%20+%203G%20(AT&T) 

後です単一引用符

で包まれたMySQLのDBに挿入後

Apple iPad 2 16GB Wifi 3G (AT&T) 

を呼び出します

Apple iPad 2 16GB Wifi 3G (AT 

元の文字列をデータベースに正確に取得するにはどうすればよいですか?

+0

データがMySQLに挿入される直前に有効であれば、問題はURLエンコーディングとは関係ありません。さらに、PHPから*デコードする必要があるGET引数をどうやって渡していますか?デコードは自動です。 –

答えて

2

encodeURIの代わりにencodeURIComponentを使用する必要があります。

JavaScriptのencodeURIComponentの後の文字列はApple%20iPad%202%2016GB%20Wifi%20%2B%203G%20(AT%26T)になります。この文字列は、PHPでurldecodeを使用してApple iPad 2 16GB Wifi + 3G (AT&T)に変換されます。

2

データベースフィールドは、おそらく完全な文字列を含むのに十分な長さではありません。

また、あなたがencodeURIComponent代わりのencodeURI

0

で文字列をエンコードする必要がありますがPHP.JS's urlencode functionを見上げて - それはPHPのでurlencodeとまったく同じように動作しますので、urldecodeは完璧に動作します。

0

PHPのrawurlencodeは "+"を保持します。アンパサンドについてはわからないので、文字列をhtmlentitiesに渡すことができます。