2011-11-07 5 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) 

전화는 작은 따옴표

,536와 포장
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

데이터베이스 필드는 전체 문자열을 포함 할만큼 길지 않을 가능성이 큽니다.

은 또한 최대 PHP.JS's urlencode functionencodeURIComponent 대신

0

encodeURI의로 문자열을 인코딩해야 - URLDECODE가 완벽하게 작동 할 수 있도록 그것은, PHP의를 urlencode과 정확히 같은 방식으로 작동합니다.

0

PHP의 rawurlencode는 "+"를 유지합니다. 앰퍼샌드에 대해 잘 모르면 htmlentities에 문자열을 전달해 볼 수 있습니다.