Arabic characters and UTF-8 in aria2

早过忘川 提交于 2020-05-30 08:42:49

问题


I use aria2 to have download with XML_RPC and when i want to have a download like this in php :

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

it will create a folder named شسÛب instead of دانلود. i post a related post in aria2 forums. and they said aria2 has not problem if that string sent to aria2 with utf-8.

so, i used utf-8 header and convert the string to utf-8, but it's not works :

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

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

what do you think?


回答1:


Try accessing the file or folder via the browser. By writing a .htaccess-file with the content "Options Indexes" so that you're folders are shown.(I can even access them via http)

I created multiple files and folders by writing a script where the GET Value file or folder determines the name of the folder or file, I tried it with japanese and arabic characters. Albeit they won't be shown in FTP correctly (In my case only file names like: "?????") they are correctly displayed if you read them by script.

The problem might be at the program you're using to access your FTP, WinSCP for example has UTF-8 normally on "auto" by default, so forcing it might work out.(Although I have to admit that it's not working on my side, maybe my linux server is not supporting utf-8 file names which can also be a problem for you)

PS: Also make sure your php-file is encoded(saved) in UTF-8 without BOM since you're using a constant utf-8 string.

EDIT: Also if you still intent to use mb_convert_encoding, better add the optional parameter "from_encoding". I tested this with japanese in a SHIFT-JIS encoded file:

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

and it's not displaying correctly although my browser has UTF-8 activated, so it seems to be not always right when it's trying to detect the Encoding.

So this for example works for me then:

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

This little script is nice to findout the optional parameter you want for your arabic characters: http://www.php.net/manual/de/function.mb-convert-encoding.php#97902

But converting won't be necessary if the file is already in UTF-8, it's only making sense if it's in some arabic encoding, so I think this is not really bringing you any further to the solution.

EDIT2: Tried a different FTP-Program, Filezilla displays my files and folder, which have japanese names and the arabic one, correctly. (I was using WinSCP 4.3.4 before)



来源:https://stackoverflow.com/questions/19829395/arabic-characters-and-utf-8-in-aria2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!