aria2中的阿拉伯字符和UTF-8

时间:2013-11-07 06:29:55

标签: php encoding utf-8 aria2

我使用aria2下载XML_RPC,当我想在php下载这样的下载时:

$client->aria2_addUri( array($url), array("dir"=>'/home/amir/دانلود') );

它将创建一个名为Ø'سÛب的文件夹而不是دانلود。我发布了相关的post in aria2 forums。他们说aria2如果用utf-8发送到aria2就没有问题。

所以,我使用utf-8标头并将字符串转换为utf-8,但它不起作用:

header('Content-type:application/json; charset=utf-8');

$dir_on_server = mb_convert_encoding($dir_on_server, 'UTF-8');
你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

尝试通过浏览器访问文件或文件夹。 通过编写带有“选项索引”内容的.htaccess文件,以便显示文件夹。(我甚至可以通过http访问它们)

我通过编写脚本来创建多个文件和文件夹,其中GET值文件或文件夹确定文件夹或文件的名称,我尝试使用日语和阿拉伯语字符。虽然它们不会在FTP中正确显示(在我的情况下只有文件名如:“?????”)如果你通过脚本阅读它们,它们会被正确显示。

问题可能出在您用来访问FTP的程序上,例如WinSCP默认情况下UTF-8通常处于“自动”状态,因此强制它可能会有效。(虽然我不得不承认它不是在我身边工作,也许我的linux服务器不支持utf-8文件名,这也可能是你的问题)

PS: 同时确保您的php文件以UTF-8编码(保存),无需BOM ,因为您使用的是常量utf-8字符串。

修改 此外,如果您仍然打算使用mb_convert_encoding,最好添加可选参数“from_encoding”。 我在SHIFT-JIS编码文件中用japanese测试了这个:

$text = "A strange string to pass, maybe with some 日本語の characters.";
echo mb_convert_encoding($text, 'UTF-8');

虽然我的浏览器激活了UTF-8但它没有正确显示,所以当它试图检测编码时似乎并不总是正确。

所以这个例如适用于我:

$text = "A strange string to pass, maybe with some 日本語の characters.";
echo mb_convert_encoding($text, 'UTF-8', 'SJIS');  //from SJIS(SHIFT-JIS)

这个小脚本很好找到你想要的阿拉伯字符的可选参数: http://www.php.net/manual/de/function.mb-convert-encoding.php#97902

但是如果文件已经是UTF-8,那么转换就没有必要了,只有它采用了一些阿拉伯语编码才有意义,所以我认为这并没有真正为你带来任何进一步的解决方案。

<强> EDIT2: 尝试了一个不同的FTP程序,Filezilla正确显示我的文件和文件夹,它们有日文名称和阿拉伯语名称。 (之前我使用的是WinSCP 4.3.4)