vla*_*ko0 3 php utf-8 iso-8859-1 file-get-contents
我想从yahoo.com获取搜索结果.
但是 file_get_contents()将UTF-8字符集(charset,雅虎使用的)内容转换为ISO-8859-1.
尝试:
$filename = "http://search.yahoo.com/search;_ylt=A0oG7lpgGp9NTSYAiQBXNyoA?p=naj%C5%A1%C5%A5astnej%C5%A1%C3%AD&fr2=sb-top&fr=yfp-t-701&type_param=&rd=pref";
echo file_get_contents($filename);
Run Code Online (Sandbox Code Playgroud)
脚本为
header('Content-Type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)
要么
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
要么
$er = mb_convert_encoding($filename , 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
要么
$s2 = iconv("ISO-8859-1","UTF-8",$filename );
Run Code Online (Sandbox Code Playgroud)
要么
echo utf8_encode(file_get_contents($filename));
Run Code Online (Sandbox Code Playgroud)
没有帮助,因为在获取网页内容特殊字符作为šťž被替换为问号???
我将不胜感激任何帮助.
这似乎是一个内容协商问题,因为file_get_contents
可能会发送一个只接受ISO 8859-1作为字符编码的请求.
您可以创建自定义流上下文以file_get_contents
使用stream_context_create
它明确声明您接受UTF-8:
$opts = array('http' => array('header' => 'Accept-Charset: UTF-8, *;q=0'));
$context = stream_context_create($opts);
$filename = "http://search.yahoo.com/search;_ylt=A0oG7lpgGp9NTSYAiQBXNyoA?p=naj%C5%A1%C5%A5astnej%C5%A1%C3%AD&fr2=sb-top&fr=yfp-t-701&type_param=&rd=pref";
echo file_get_contents($filename, false, $context);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25735 次 |
最近记录: |