日语(或非ASCII)网址和卷曲

时间:2013-04-22 09:30:19

标签: php curl character-encoding

我正在尝试访问此网址的文件:http://www.myurl.com /伊势/image.jpg。

网址是预定义的,没有特定的格式或一致性。

我正在使用的基本卷曲功能适用于从myurl.com下载图像,但在网址中包含日文字符时则不行。我尝试过以各种方式清理url(例如urlencode,filter_var和mb_convert_encoding),但没有成功。

如果我直接从浏览器访问网址,那很好 - 所以我唯一无法解决的问题是在curl函数中处理非ASCII(日文)字符。

我的问题是 - 如何解决这个问题?是否有一个卷曲选项可以包含在函数中,以便像浏览器一样读取URL?

3 个答案:

答案 0 :(得分:3)

  

如果我直接从浏览器访问网址,那很好

这意味着您的浏览器编码“伊势”(如%E4%BC%8A%E5%8B%A2)并在后台发送请求。但请继续浏览浏览器地址框。

我的建议是使用http调试器,例如firefox中的“firebug”或chrome中的“开发者工具”。

检查“网络”选项卡,并在其详细信息页面中找到REAL请求参数。然后,您可以找到您的浏览器发送的内容。

希望这有用。

答案 1 :(得分:1)

没什么特别的 我用UTF-8创建了一个php文件(使用记事本的save as encoding UTF-8):

<?php

$url = 'http://rp.postcontrol.ru/伊勢.txt';

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);

if ( $result =  curl_exec($ch) )
{
    echo $result;
}
else
echo "cURL error: ".curl_error($ch);


curl_close( $ch );

您可以在http://rp.postcontrol.ru/eddz.php.txt

处获取PHP文件

它适用于我并返回(伊势.txt也是UTF-8):

おはようございます eddz さん.

答案 2 :(得分:0)

将path参数附加为url编码的字符串,它将起作用。  例如:

$url = 'http://rp.postcontrol.ru/';
$filename = urlencode("伊勢.txt");

$url .= $filename;