1

我使用 aria2 通过 XML_RPC 进行下载,当我想在 php 中进行这样的下载时:

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

它将创建一个名为 شسÛب 的文件夹,而不是 دانلود。我在 aria2 论坛上发布了相关帖子。他们说,如果该字符串使用 utf-8 发送到 aria2,则 aria2 没有问题。

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

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

$dir_on_server = mb_convert_encoding($dir_on_server, 'UTF-8');

你怎么看?

4

1 回答 1

0

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

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

问题可能出在您用来访问 FTP 的程序上,例如 WinSCP 在默认情况下通常将 UTF-8 设置为“自动”,因此强制它可能会奏效。(尽管我不得不承认它不适用于我的一面,也许我的 linux 服务器不支持 utf-8 文件名,这对你来说也是个问题)

PS:还要确保您的 php 文件在没有 BOM 的情况下以 UTF-8 编码(保存),因为您使用的是常量 utf-8 字符串。

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

$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)

于 2013-11-07T07:33:38.707 回答