Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Передача параметров в UTF-8


Автор: Kudzu 22.9.2009, 13:14
Доброго времени суток!
Имеем скрипт на python, в который из пхп передаются параметры на русском языке в UTF-8.
Питон вызывается через passthru().

Суть проблемы, в логах вижу вот такую балалайку:

Цитата

OSError: [Errno 2] No such file or directory: '/opt/toko/\xd0\xb3\xd0\xb0\xd1\x80\xd1\x80\xd0\xb8_\xd0\xbf\xd0\xbe\xd1\x82\xd1\x82\xd0\xb5\xd1\x80_\xd0\xb8_\xd1\x84\xd0\xb8\xd0\xbb\xd0\xbe\xd1\x81\xd0\xbe\xd1\x84\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9_\xd0\xba\xd0\xb0\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x8c_avi.stat.pid'


Need Help!

Автор: Ипатьев 22.9.2009, 13:42
Наверное, надо перекодировать из utf-8 в ту кодировку, в которой записаны имена файлов на диске?

Автор: skyboy 22.9.2009, 13:47
у тебя имя файла на русском.
соответственно, возникают проблемы с кодировкой: ты передаешь имя файла в UTF-8(судя по приведенной тобой ошибке). а файловая система ожидает либо koi8, либо cp1251.
впрочем, мне кажется возможным, что перекодирование не требуется и подсистема ввода-вывода используемой ОС поддерживает работу с unicode, но такой папки действительно не существует.

Автор: Kudzu 22.9.2009, 13:58
ОСь Linux. Локаль ru_RU.UTF-8 присутствует. Я не могу понять кто из участников(PHP,Apache,Python) портит-непонимает юникод.

Автор: Ипатьев 22.9.2009, 14:13
Чтобы понять, надо совершать какие-то телодвижения. В просторечии называемые отладкой.
Невозможно узнать кодировку имен файлов на своем диске путем беседы на форуме. 

Автор: Kudzu 22.9.2009, 14:16
Из php вызвал  passthru("echo 'слава путену-слава россииу'>/tmp/123456");

dorme:/# cat /tmp/123456 
слава путену-слава россииу

MC в хексах кажет, что это истинно юникод. 
 
WTF? спрашивается

Автор: Ипатьев 22.9.2009, 14:21
при чем здесь PHP?
имена файлов в /opt/toko/, к которым обращается скрипт, в какой кодировке?

Автор: Kudzu 22.9.2009, 14:35
Всем спасибо, проблема решена. В питоне переменной, которая получала русские символы указал unicode().

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)