PDA

Просмотр полной версии : upload изображения с русским именем


Mur4ik
13.01.2009, 23:00
Собственно сам проблема в том что при загрузке изображения на сервер с помощью FileReference, его потом невозможно загрузить обратно во флеш, т.к имя его на сервере искажается
с "русское название файла.jpg"
на "СЂСѓСЃСЃРєРѕРµ название файла.jpg"

как обратно перекодировать эти символы?
или как получить такое же название во флеше исходя из русского имени?

scarbo
13.01.2009, 23:04
iconv в PHP

Mur4ik
13.01.2009, 23:07
2 scarbo:
что именно iconv делает?
и что это за каркозяблы из имени? utf-8?

хотелось бы обойтись в данном случае без PHP, это возможно?

понял что iconv перекодирует из одной кодировки в другую, вот только какие кодирвки использовать, т.е из какой перекодировать?

scarbo
14.01.2009, 01:07
хотелось бы обойтись в данном случае без PHP, это возможно?А как же ты их туда закачиваешь-то?:eek:
На моем по умолчанию "cp1251" выставлена так что так - на сервер$name = iconv("UTF-8", "cp1251", $name);с сервера - $name = iconv("cp1251", "UTF-8", $name);

etc
14.01.2009, 02:04
Не надо использовать всяческие недокодировки, вроде cp1251.

scarbo
14.01.2009, 02:55
Не надо использовать всяческие недокодировки, вроде cp1251.__etc какой тогда выход предложите?

Mur4ik
14.01.2009, 07:01
А как же ты их туда закачиваешь-то?:eek:


Ну понятно что с помощью PHP :)

Я имею ввиду возможно ли во флеше перекодировать имя файла в UTF-8? для дальнейшей загрузки через MovieClipLoader...


...с сервера - $name = iconv("cp1251", "UTF-8", $name);


что имеется ввиду с сервера? это в случае download?

2 __etc:
может есть все таки альтернатива?


$img_file = iconv('utf-8', 'cp1251', $_FILES['Filedata']['name']);
желаемого результата не дает:
из "русское название файла.jpg" делает "название файла.jpg"
из "картинка1.jpg" делает "1.jpg"

updated
scarbo, спасибо ОГРОМНОЕ - все заработало
имена обрезались из-за basename
$img_file = iconv('utf-8', 'cp1251', $_FILES['Filedata']['name']);

// так было
//move_uploaded_file($_FILES['Filedata']['tmp_name'], CMS_ROOT.$configs['imgPathTemplate'].basename($img_file));

//так сделал
move_uploaded_file($_FILES['Filedata']['tmp_name'], CMS_ROOT.$configs['imgPathTemplate'].$img_file);

и все заработало как нужно

еще раз спасибо scarbo :drinks:

etc
14.01.2009, 13:23
__etc какой тогда выход предложите?
Использовать utf-8 везде и всюду.

gloomyBrain
14.01.2009, 16:00
Использовать utf-8 везде и всюду.
Ну как бы места побольше занимает =)

etc
14.01.2009, 16:05
Ну как бы места побольше занимает =)
В мире, где гигабайт стоит центов 10? А проблемы с корректным отображением данных вас вообще не волнуют? Печально.

gloomyBrain
14.01.2009, 16:15
сколько бы ни стоил гигабайт - передача какой либо книжки Толкиена в кодировке UTF-8 займет несколько больше времени, чем в cp1251 (при условии, что книжка на русском).
Хотя в мире где 4mb/sek стоит 15 рублей в день =)... Все меняется со временем
Печально.
Действительно, печально

Mur4ik
14.01.2009, 21:09
Как использовать utf-8, если выбор файла происходит с компьютера пользователя и при передаче используется именно win1251 (если грузить из под Windows).

Как при аплоаде через FileReference принудительно указать кодировку?
в AIR есть такие методы, а как этого добиться в as2?