2013-11-07 4 views
1

Я использую aria2, чтобы скачать с XML_RPC и когда я хочу, чтобы иметь загрузку, как это в PHP:арабские символы и UTF-8 в aria2

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

он будет создать папку с именем Ø'سÛب вместо of دانلود. Я разместил связанный post in aria2 forums. и они сказали, что aria2 не проблема, если эта строка отправлена ​​в aria2 с utf-8.

так, я использовал заголовок UTF-8 и преобразовать строку в UTF-8, но это не работает:

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

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

Что вы думаете?

+0

Какую операционную систему вы используете? Поддержка Unicode файловой системы не работает в Unix, как в Windows. – Joni

+0

@ mahia посмотрел ли вы на мой ответ, потому что вы ничего не говорили об этом? –

ответ

0

Попробуйте получить доступ к файлу или папке через браузер. Записывая файл .htaccess с содержимым «Параметры индексов», чтобы отображались папки. (Я даже могу получить к ним доступ через http)

Я создал несколько файлов и папок, написав сценарий, где GET Файл или папка значения определяет имя папки или файла, я пробовал ее с японскими и арабскими символами. Хотя они не будут отображаться на FTP правильно (в моем случае только имена файлов, такие как: «?????»), они отображаются правильно, если вы читаете их по сценарию.

Проблема может быть в программе, которую вы используете для доступа к FTP, например WinSCP имеет UTF-8, как правило, на «авто» по умолчанию, поэтому принудительное его выполнение может быть выполнено. (Хотя я должен признать, что это не работает на моей стороне, может быть, мой Linux сервер не поддерживает UTF-8 имен файлов, которые также могут быть проблемой для вас)

PS: также убедитесь, что ваш PHP-файл закодирован (сохраняются) в UTF- 8 без спецификации, так как вы используете постоянную строку utf-8.

EDIT: Кроме того, если вы по-прежнему намерены использовать 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) 

Этот маленький сценарий приятно Findout дополнительный параметр, который вы хотите для арабских символов: http://www.php.net/manual/de/function.mb-convert-encoding.php#97902

Но преобразование не нужно будет если файл уже находится в UTF-8, это имеет смысл только в том случае, если он находится в некотором арабском кодировании, поэтому я думаю, что это не приводит вас к дальнейшему решению.

EDIT2: Пробовал другой FTP-программу, Filezilla отображает мои файлы и папки, которые имеют японские имена и арабские один, правильно. (Раньше я использовал WinSCP 4.3.4)

Смежные вопросы