file_get_content()不适用于包含utf-8字符的url

时间:2016-10-25 00:30:19

标签: php utf-8

好吧,我正试图从某个网页上获取HTML。此网页的URL中包含UTF-8字符,PHP正在向我显示此错误:

  

警告:   的file_get_contents(http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-é-uma-cidade-estado-planejada-para/):   无法打开流:HTTP请求失败!找不到HTTP / 1.1 404   第102行的C:\ xampp2 \ htdocs \ test \ index.php

第102行是:

if($content = file_get_contents($this->link)){

我确信问题实际上是URL中的'é',因为当我尝试将此函数与不包含UTF8字符的URL一起使用时,它可以正常工作。

更具体地说,没有UTF-8字符的URL是:

  

http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/os-nossos-ancestrais-dedicavam-se/

有谁知道我该怎么办?

提前致谢!

1 个答案:

答案 0 :(得分:0)

嗯,答案比我想象的要简单。

而不是使用原始网址

  

http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-%C3%A9-uma-cidade-estado-planejada-para/

我使用方法rawurlencode仅对UTF-8字符进行编码,如:

$url = "http://enem.descomplica.com.br/gabarito/enem/2015/dia-1-2a-aplicacao/questoes/dubai-" . rawurlencode("é") . "-uma-cidade-estado-planejada-para/";

现在有效!