phpencodingutf-8aria2

Arabic characters and UTF-8 in aria2


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?


Solution

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