0

我正在与 Android 应用程序中的 PHP Web 服务进行通信。从 android 发送的所有请求都使用 UTF-8 编码,php 脚本使用 utf-8 对其进行解码。

但是,当使用撇号发送任何请求时,php 的解码功能似乎无法正常工作。

例如,如果我将请求发送为“今日星座”,那么其 utf-8 编码将是“今日%27s+星座”。我试图用 Android 解码它并且它是成功的。但在 php 中,它在解码后给出相同的文本。

数据库是MySql。这是数据库或php的问题吗?我不确定,但有解决这个问题的方法吗?

问候

苏尼尔

4

3 回答 3

2

这不是 UTF-8 编码,它被称为 URL 或百分比编码urldecode()在将数据插入数据库之前尝试运行数据。

于 2010-07-14T09:46:40.450 回答
1

我在 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);

于 2010-08-03T10:42:17.573 回答
1
urldecode(rawurldecode("Today%27s+Horoscope"));

正如Pekka指出的那样urldecode,在这种情况下就足够了,这主要是(过度的)预防措施,因为我已经看到urldecode失败了

于 2010-07-14T09:48:07.603 回答