2010-07-14 50 views
0

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

但是,当任何请求与撇号发送'PHP的解码功能似乎并不工作的方式应该。

例如,如果我将请求作为“今日星座”发送,那么它的utf-8编码将为“今日%27s +星座运势”。我试图用Android来解码,并且成功了。但在PHP中,解码后会提供相同的文本。

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

问候

苏尼尔

回答

2

这不是UTF-8编码,这就是所谓的URL或percent encoding。在将数据插入数据库之前,请尝试通过urldecode()运行数据。

+0

在PHP中,我们使用了同样的事情之前转义引号即urldecode(),但仍问题仍然存在。你能让我知道有什么问题吗? – sunil 2010-07-14 11:00:43

+0

@sunil请显示您用来插入数据的代码。 – 2010-07-14 11:02:19

+0

这就是我没有访问PHP代码的问题。你能告诉我它的解码问题还是插入MySQl? – sunil 2010-07-14 11:03:56

1
urldecode(rawurldecode("Today%27s+Horoscope")); 

如佩卡·指出urldecode在这种情况下,充足,这主要是(过头)的预防措施,因为我已经看到urldecode失败

+0

'rawurldecode'真的需要吗? urlencode()不处理这两件事情吗? – 2010-07-14 09:50:28

+0

你是对的,但我见过只有两个都给出了正确的解决方案,不知道为什么,但在这种情况下,'urldecode()'就足够了。我只是总是使用两者来确保... – DrColossos 2010-07-14 09:55:01

+0

如果您在文本中有%符号,则双重解码会破坏您的文本。 – Naktibalda 2010-07-14 09:59:17

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