Странная проблема апострофа в общении с PHP скриптом из Android - PullRequest
0 голосов
/ 14 июля 2010

Я общаюсь с веб-службами PHP в приложении Android. Все запросы, отправленные с Android, кодируются с помощью UTF-8, а сценарии php декодируют его с помощью UTF-8.

Но когда любой запрос отправляется с апострофом, кажется, что функция декодирования php работает не так, как должна.

Например, если я отправлю запрос как «Сегодняшний гороскоп», то его кодировка utf-8 будет «Сегодня% 27s + Гороскоп». Я попытался расшифровать это с Android, и это было успешно. Но в php он дает тот же текст после декодирования.

База данных MySql. Это проблема с базой данных или php? Я не уверен в этом, но есть ли решение этой проблемы?

Привет

Сунил

Ответы [ 3 ]

2 голосов
/ 14 июля 2010

Это не кодировка UTF-8, она называется URL или процентная кодировка .Попробуйте выполнить данные через urldecode(), прежде чем вставлять их в базу данных.

1 голос
/ 03 августа 2010

Я попробовал ваш пример в коде php и не смог получить ошибку, как вы упомянули.

$str = "Today's Horoscope";

echo $str; //Today's Horoscope

echo "Encoded: ".urlencode($str); //Encoded: Today%27s+Horoscope

echo "Decoded: ".urldecode($str); //Decoded: Today's Horoscope

Если вы хотите экранировать кавычки перед вставкой в ​​базу данных, используйте mysql_real_escape_string($str);

1 голос
/ 14 июля 2010
urldecode(rawurldecode("Today%27s+Horoscope"));

, как указал Пекка, urldecode в этом случае достаточно, это в основном (чрезмерно) предосторожность, так как я видел urldecode сбой

...