2011-06-14 56 views
1

我有与PHP相关的第n个问题编码!PHP在编写web服务调用时的编码问题

这样的故事是:

  • 我从一个文件(ISO-8859)读取URL。我不能改变这个文件的编码,因为我不会在这里讨论。

  • 我使用该网址来调用其他web服务。

  • 这个url恰好包含了符号“è”,这个符号在PHP引擎加载时传递给 。

  • 因此,web服务返回并产生意外的结果,因为它得到的实际上是“perch ”而不是“perchè”。

我试图强迫PHP做符合ISO-8859的工作:

ini_set('default_charset', "ISO-8859"); 

的问题是,它仍然无法正常工作和web服务不能正确回答。我确定web服务正常工作,因为我试图在浏览器中手动复制粘贴网址,并收到了预期的数据。

+0

备注:一个URL不应该包含非ASCII - 即使它通常有效,它们也应该是URL编码的。 – 2011-06-14 14:54:28

回答

1

您可以使用iconv()将数据从一个字符集转换为另一个字符集。发送请求之前

$data = iconv("iso-8859-1", "utf-8", $data); 

你的REST Web服务是最有可能期待UTF-8的数据,所以你会做这样的事情。

+0

伟大的伴侣!你让我的一天 – nourdine 2011-06-14 14:13:04

+0

佩卡,你必须有魔法能力。我在这个问题中读到:“我从一个文件(ISO-8859)中读取了一个URL,由于种种原因,我不能改变这个文件的编码。” – hakre 2011-06-14 14:22:35

+0

@好吧,他可以在从文件中读取后更改URL,不是吗? – 2011-06-14 14:29:24