当我查看使用以下代码获得的XML数据源时,XML代码中的特殊字符是正确的。 但是当Curl返回数据时,“ó”和“ä”等字符将转换为resp。 “³”和“¤”。 这种转换发生在所有特殊字符上,这两个只是一个例子。
$myvar = curl_init();
$myURL = "http://someurl.com/";
curl_setopt($myvar, CURLOPT_USERAGENT, '[Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2")]');
curl_setopt($myvar, CURLOPT_URL, $myURL);
curl_setopt($myvar, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($myvar, CURLOPT_TRANSFERTEXT, TRUE);
curl_setopt($myvar, CURLOPT_CONNECTTIMEOUT,3);
$xmlstr = curl_exec ($myvar);
XML文件的标题说如下编码“?xml version =”1.0“encoding =”UTF-8“?”
我想要的是让相同的字符显示在Curl结果中而不进行任何转换。
希望我错过了一些简单明了的步骤,期待任何答案。
祝你好运 冯斯希
答案 0 :(得分:6)
您如何知道$xmlstr
包含错误的字节?如果您正在查看某种终端窗口中的输出,则问题可能是终端不支持UTF-8,而不是cURL已损坏。
cURL不关心UTF-8或任何其他字符编码 - 它的工作只是从某个地方获取字节序列。它不太可能做任何会破坏特殊字符的事情。如果您使用cURL的方式有问题,那么它将会破坏所有内容,而不仅仅是非ASCII字符。