1

我正在从 URL 加载内容;URL 的格式为 www.example.com/?keyword=something。我根据用户的关键字得到具体的内容,如下所示:

$url = 'www.example.com/?';
$url = $url."keyword=$something";

function getData ($url) {

    $data = file_get_contents($url);

    return $data;
}

原始数据包含像 Ö 或 Å 这样的斯堪的纳维亚字符。加载后,这些字符不再可读。如何解决这个特殊字符问题?

更新:

我以这种方式更改了代码:

function getData ($url) {

   $data = urlencode(file_get_contents($url));
   $data = urldecode($data);

    return $data;
}

也没有帮助。也 $data = utf8_decode(urldecode($data));不要echo utf8_decode(urldecode(getData($keyword)));帮助。我在这里做错了什么?

4

3 回答 3

3

file_get_contents不知道字符集。它返回提供的确切字节。这意味着,如果 url 返回 UTF-8,并且您将其显示为 iso-8859-1,那么事情就会看起来不对。很可能是这种情况(但也可能反过来)。转换为 ISO-8859-1,或更改您的应用程序以使用 UTF-8。前者可能是最简单的更改 - 通过管道传输内容utf8_decode,从 UTF-8 转换为 ISO-8859-1。

例如:

function getData ($url) {
    $data = file_get_contents($url);
    $data = utf8_decode($data);
    return $data;
}
于 2013-01-18T15:48:39.787 回答
1

您需要使用 将文本转换为正确的编码mb_convert_encoding

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

如果您使用的是其他编码,请将其替换为'UTF-8'.

于 2013-01-18T15:42:59.527 回答
0

使用urlencode(在通过 get 传递数据之前)和urldecode(解码先前编码的字符串)

http://php.net/manual/en/function.urlencode.phphttp://php.net/manual/en/function.urldecode.php

PS:文件和目录不应包含任何变音符号或特殊字符!

于 2013-01-18T15:24:08.033 回答