我正在从网址加载内容;该网址格式为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)));
也无济于事。我在这做什么事呢?
答案 0 :(得分:3)
file_get_contents
不是charset意识到的。它返回它提供的确切字节。这意味着如果url返回UTF-8,并将其显示为iso-8859-1,那么事情就会出错。最有可能的情况是这种情况(但也可能是相反的情况)。转换为ISO-8859-1,或将您的应用更改为使用UTF-8。前者可能是最简单的变化 - 通过utf8_decode
管道内容,从UTF-8转换为ISO-8859-1。
E.g:
function getData ($url) {
$data = file_get_contents($url);
$data = utf8_decode($data);
return $data;
}
答案 1 :(得分:1)
您需要使用mb_convert_encoding
将文本转换为正确的编码。
$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));
如果您使用其他编码,请将其替换为'UTF-8'
。
答案 2 :(得分:0)
使用urlencode
(通过get传递数据之前)和urldecode
(解码先前编码的字符串)
http://php.net/manual/en/function.urlencode.php 和 http://php.net/manual/en/function.urldecode.php
PS:文件和导演不应包含任何变音符号或特殊字符!