【发布时间】:2016-04-05 16:17:28
【问题描述】:
我正在尝试使用 file_get_contents() 读取页面,但无法使字符编码正常工作。
这是我的代码:
$username = "masked";
$password = "maskedPass";
$remote_url = 'https://utfws.utfpr.edu.br/aluno01/sistema/mplistahorario.inicio?p_curscodnr=212';
// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header' => array(
"Authorization: Basic " . base64_encode("$username:$password"),
'Accept-Charset: iso-8859-1'
)
)
);
$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents($remote_url, false, $context);
echo $file;
我尝试将字符编码更改为 utf-8,但我总是得到一个带有问号而不是 áéíóúãõç 的页面。
当我直接在浏览器中打开页面时,它工作得很好。为什么会这样?
【问题讨论】:
-
小心,你已经写好了你的用户名和密码;这可能对您或网站不利?我已经尝试过你的代码(复制/过去)并且编码没问题
-
header('Content-Type: text/html; charset=iso-8859-1'); echo $file;指定使用哪种编码来读取$file。 -
我不太确定 file_get_contents 是否关心 - 它只是 file_get_contents 的字节流,对吧?我怀疑问题是当您查看结果时,您没有在 8859-1 中查看。
-
你可以说
Accept-Charset: iso-8859-1。但不能保证服务器会以该编码向您发送数据。 -
@JoãoMiranda 不要忘记更改您的测试用户名和密码。他们仍然在这个问题的历史中,并且仍然被抓住它的人和查看历史的人所知道。而且它们仍然有效。
标签: php html http character-encoding iso-8859-1