问题描述
|
我有与PHP相关的第n个问题编码!
所以故事是:
我从文件(ISO-8859)中读取了一个网址。由于各种原因,我无法在此处进行讨论,因此无法更改此文件的编码。
我使用该URL调用其余的Web服务。
该URL恰好包含符号\“è\”,当由PHP引擎加载该符号时,该符号便被迷惑了。
结果,Web服务返回了意外结果,因为它得到的实际上是单词“ perch”,而不是“perchè”。
我试图通过执行以下操作来强制PHP使用ISO-8859:
ini_set(\'default_charset\',\"ISO-8859\");
问题在于它仍然无法正常工作,并且网络服务无法正确应答。我确定当我尝试在浏览器中手动复制粘贴URL时,webservice可以正常工作,并且收到了预期的数据。
解决方法
您可以使用
iconv()
将数据从一个字符集转换为另一个字符集。
您的REST Web服务很可能期望使用UTF-8数据,因此您必须执行以下操作:
$data = iconv(\"iso-8859-1\",\"utf-8\",$data);
在发送请求之前。