Вход

Просмотр полной версии : URL на русском и Flash VIDEO/MP3 player


bouillon
21.07.2007, 21:51
Всем привет. Мне хотелось бы разъяснить один занимательный вопрос.
У себя на сайте я использую flash-video-player и mp3-player которые вот уже год как отлично работают, а проблема в следующем.
В Интернете URLы на русском языке никто не запрещал и так я могу использовать

http://static.mymir.org/8/h/01 - деньги.mp3 перекодировав это всё дело по правилам в такой вид.
http://static.mymir.org/8/h/01%20-%20%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B8.mp3

Проблема в том что вот флаш-плеер почему-то не хочет работать с такими запросами. А именно происходит следующее.

Вот пример простого кода вставки


<h1>Other player</h1>
<object type="application/x-shockwave-flash" data="/player.swf?src=http://static.mymir.org/8/h/01%20-%20%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B8.mp3
" height="28" width="200">

<param name="movie" value="/player.swf?src=http://static.mymir.org/8/h/01%20-%20%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B8.mp3
">
<param name="wmode" value="transparent">
<param name="bgcolor" value="#00cd2b">
</object>


Если этот код открыть в Firefox и одновременно смотреть запросы (например с помощью live HTTP headers) то запрос идёт такой

http://static.mymir.org/8/h/01%20-%20%E4%E5%ED%FC%E3%E8.mp3

Такого файла конечно же на сервере нету. Я долго думал что это такое а оказывается это

http://static.mymir.org/8/h/01 - деньги.mp3 - но в кодировке CP1251. Мне вообще не понятно при чём здесь кодировка cp1251. Я работаю исключительно в UTF-8. Я испробовал несколько плееров но все почему-то перекодируют. Я не могу себе это объяснить. Возможно, у кого есть идеи по этому поводу.

Kikasso
21.07.2007, 21:54
Идея проста - не использовать русские буквы в интернете.

bouillon
21.07.2007, 22:01
Это не решение проблемы. Все используют смотрите например wikipedia.

Cкептик
21.07.2007, 23:40
Flash, к сожалению, страдает от этого недуга, а именно не понимает русских букв. Хотя как дела обстоят в AS3 не знаю, может и исправлено.

etc
22.07.2007, 00:07
bouillon, отредактируйте свой пост и оформите код тегами .

bouillon
22.07.2007, 13:56
Flash, к сожалению, страдает от этого недуга, а именно не понимает русских букв. Хотя как дела обстоят в AS3 не знаю, может и исправлено.

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

etc
22.07.2007, 13:58
Флеш работает исключительно с utf-8 и правильно делает.

bouillon
22.07.2007, 14:57
Флеш работает исключительно с utf-8 и правильно делает.

Я и не спорю. Я работаю тоже исключительно в UTF-8 в этом и заключается мой вопрос. В моём вопросе что то не понятно???
Я спрашиваю почему запросы к серверу (URL UTF8) перекодируется в (CP1251) если URL содержин национальные русские символы.

Смотрите здесь

http://www.mymir.ru/t

HTTP Live Headers например

etc
22.07.2007, 15:01
Это к браузеру вопросы, собственно.

bouillon
22.07.2007, 15:02
У меня в переменной file стоит адрес. Я не хочю ничего сверхъестественного. Мне хотелось бы что бы flash брал один к одному переменную file и передавал на сервер, не перекодируя ничего и никуда. Я буду просто счастлив.

bouillon
22.07.2007, 15:07
Это к браузеру вопросы, собственно.

Ну как на это посмотреть.

вот с таким линком браузер делает то что считает нужным и часто такой линк не работает.
ru.wikipedia.org/wiki/Россия

такой линк работает всегда
http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F

А вот флаш сделал бы из этого
DECODE.cp1251('http://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F')

Возможно это делает flashplugin браузера но я хочу это отключить как я уже писал выше. Не ужели нельзя

etc
22.07.2007, 15:13
Как вариант, можно попробовать заменить % в escape-урле на %25. Т.е. ещё раз сделать escape.

bouillon
22.07.2007, 15:24
YES!!!
Спасибо. Буду всё это интегрировать. Посмотрим как будет работать.
А как вы к этому пришли?

etc
22.07.2007, 15:41
Интуиция. Не будет же оно ещё раз делать перекодировку…

bouillon
22.07.2007, 15:42
Хотя тот проигрыватель который мне нужен всё равно перекодирует в cp1251.

http://www.mymir.ru/t

Вот последний, всё там тепер работает а третий Double UTF-8 URL занимается непонятными вещами.

etc
22.07.2007, 15:45
Возможно там используется System.useCodepage.

Для начала неплохо было бы обеспечивать одинаковый код размещения флеша для всех плееров, а уж потом смотреть на проблему.
Плюс ко всему не следует забывать о политике безопасности, плеер не будет ничего грузить с чужого домена, если там он не найдет разрешения на это.

Kikasso
22.07.2007, 16:06
Возможно, флеш перекодирует это дело, потому что вы передаете через адресную строку. Попробуйте передавать через flashvars.

bouillon
22.07.2007, 16:07
Да, насчет одинакового кода размещения я тоже об этом подумал. Обеспечил. Второй проигрыватель в строку вставлен, как и последний…. Работающий

Насчёт другого сервера проблема не в этом точно. Хотя могу и обеспечить.
LIVE HTTP HEADERS показывает запрос а там бред:

http://static.mymir.org/8/h/01%20-%20%E4%E5%ED%FC%E3%E8.mp3

это тоже самое, что и во втором проигрывателе только в кодировке cp1251.

Как я уже говорил что я во флэше много не понимаю. Поискав в ActionScripte "System.useCodepage" я ничего не нашел. Понимаю, что просить изучать исходный текст я не имею право. Но всё же может найдутся добрые люди ))

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

http://www.mymir.ru/playmp3now/source/jwPlaylist.as
http://www.mymir.ru/playmp3now/source/jwMp3player.as
http://www.mymir.ru/playmp3now/source/mp3player.fla

А вот самый новый проигрыватель

http://www.jeroenwijering.com/upload/jw_mp3_player.zip

bouillon
22.07.2007, 16:18
Возможно, флеш перекодирует это дело, потому что вы передаете через адресную строку. Попробуйте передавать через flashvars.

Вот добавил ещё один, третий проигрыватель в строчку. Всё равно перекодирует. Или не правильно?

etc
22.07.2007, 16:19
Проигрывать, который новый, у меня вообще не хочет грузить даже crossdomain. Надо избавиться от кроссдоменности.

bouillon
22.07.2007, 16:32
Хорошо

http://www.mymir.ru/t

так вы имеете ввиду?

etc
22.07.2007, 16:42
В общем, ковырнул плеер. Там раза 3 или 4 происходит unescape, со всеми вытекающими.

Правленную версию можно забрать отсюда:
http://etcs.ru/files/mp3player.swf

Посмотреть:

http://etcs.ru/files/mp3player.swf?file=http://static.mymir.org/8/h/01%2520-%2520%25D0%25B4%25D0%25B5%25D0%25BD%25D1%258C%25D0%25B3%25D0%25B8.mp3

За работоспособность других функций не отвечаю.

bouillon
22.07.2007, 17:35
Спасибо всё работает. Одна загвостка. Кроме mp3 проигрывателя я ещё использую видео проигрыватель с такой же болезнью. Было бы здорово если бы вы ещё его поправили и опубликовали исходники что бы в следующий раз я не просил а сам поизучал. Кроме всего я напишу автору, возможно он учьтёт ваши поправки. Я в свою очередь в знак благодарности поставлю ссылку на ваш блог или форум тут http://www.mymir.ru/recovery/tecnical

исподники видео проигрывателя тут

http://www.jeroenwijering.com/upload/jw_flv_player.zip

etc
22.07.2007, 18:06
Я не нашел никакой разницы в этих плеерах, кроме как изменения имени с MP3 на FLV.

Правленный плеер прекрасно играет видео (http://etcs.ru/files/mp3player.swf?file=video.flv).

Все, что я сделал — убрал в паре-тройке мест unescape и все. В FeedManager, AbstractPlayer и MediaPlayer.

Tardos Mors
22.07.2007, 18:28
Видимо не быть вам счастливым.
Откуда такая необходимость называть файлы на русском? Чем не подходит транслит?
ЗЫ: Блин, еще две страницы не заметил. Неужели заработало?

bouillon
22.07.2007, 19:51
Я уже счастливый блогодоря __etc

смотрите здесь
multik (http://www.mymir.ru/Members/data/%D0%A1%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B5%20%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B/files/%D0%A1%D0%BE%D1%8E%D0%B7%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)

Да заработало, а транслит не подходит вот чем.

Когда есть большое количество информации и файл нарывается "Группа Кино.mp3" то очень не плохо, если бы он в таком виде и остался бы. Нет необходимости делать запросы по базам данных и смотреть, как переводится "Группа Кино.mp3" в "Gruppa Kino.mp3". Проще контролировать целостность. Названия файлов в виде 12312dsd32e3dcd.mp3 мне не по душе.
А ещё это большой эксперимент. Как известно поисковики уже дивным давно индексируют адреса, и адрес весит больше чем заголовок. И третье прогресс не остановить. Рано или поздно Интернет будет понимать национальные символы, хочется делать сразу всё правильно и красиво. Раньше делали сайты в транслите, шас таких сайтов больше нет. Я год назад начал заворачиваться с URL ми на русском и всё отлично работает за исключением, что они длинноваты и не красивы. Реша проблему с флэшем не думаю, что меня кто-нибудь убедит меня не использовать национальные символы в названии файлов.

Kikasso
22.07.2007, 20:18
Все, что я сделал — убрал в паре-тройке мест unescape и все. В FeedManager, AbstractPlayer и MediaPlayer.
Еще в CaptionParser сидит, в parseSRT
Автор, используйте латиницу - проблем вообще не будет.
1) Вам надо набрать ссылку вручную в адресной строке. Вы набираете латиницей адрес сайта, переключаете раскладку, набираете имя файла, переключаете раскладку, набираете расширение файла. Случай с "%FC%E3%E8" я вообще не рассматриваю.
2) Вы сделали плейлист, кто-то решил его подправить, а успокоительного под рукой нет.
А вот смотрите, я вставил вашу ссылку на форум. И она неправильно обработалась.
http://www.mymir.ru/~Совецкие Мультфильмы/all-my-files?videoHren=Буревестник.avi

Ну и так, "Советские" вместо "Совецкие" и почему видеоХрен?

bouillon
22.07.2007, 20:36
к первому. Над этим я шас как раз буду работать. Не всё сразу. Всё проблемы что вы указали решаемые. Надо только один раз сделать.

2) http://www.mymir.ru/~Совецкие Мультфильмы

Это изза пробела. Видите просто этот форум тоже не догадывается что в адресе может присуствовать пробел. Если за декларировать как (url)(/url) и перекодировать как %аа%lalala%% всё будет работать. А именно ссылку как "Совецкие Мультфильмы" можно использовать только если сайт на УТФ-8.

Кодировка форума. CP1251(думаю исторически сложилось). Я использую UTF-8 и всё ок http://www.mymir.ru/t

videoHren это видео хрень типа изза не хватки фантации. Может ещё изменю.

etc
22.07.2007, 22:32
Kikasso, там не нужно это править. Я «поправил» только flashvars.

bouillon, все-таки «Советские» — по-русски, а «Совецкие» — по-албански.

bouillon
23.07.2007, 10:43
да да это я отпечатался. Не стираю для того чтобы ссылки работали а так будут советские....

etc
23.07.2007, 11:01
Site Error

An error was encountered while publishing this resource.

Resource not found
Sorry, the requested resource does not exist.

Check the URL and try again.

Resource: http://www.mymir.ru/Members/data/%D1%EE%E2%E5%F6%EA%E8%E5%20%CC%F3%EB%FC%F2%F4%E8%EB%FC%EC%FB
Вот, что мне выдается по твоей ссылке выше.

bouillon
23.07.2007, 16:22
Она не перекодирована. (link)http://www.mymir.ru/~Совецкие Мультфильмы(/link) со страницы закодированной в cp1251 обозреватель не понимает. Так можно вставлять только в том случае если сайт на UTF-8.
Вот на этой странице всё работает. http://www.mymir.ru/t (первая ссылка). Здесь нужно ссылаться типа так link (http://www.mymir.ru/~%D0%A1%D0%BE%D0%B2%D0%B5%D1%86%D0%BA%D0%B8%D0%B5%20%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B/files/%D0%A1%D0%BE%D1%8E%D0%B7%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)

8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC