Выручайте - тону....

1 23
siv1987
На сайте с 02.04.2009
Offline
427
#21

Хром кодирует строку в utf-8


/audio/%D0%94%D0%BE%D0%BC%20%D0%92%D0%B5%D1%82%D1%80%D0%BE%D0%B2/%D0%9A%D0%B8%D1%82%D0%BE%D0%B1%D0%BE%D0%B9/%D0%94%D0%BE%D0%BC%20%D0%92%D0%B5%D1%82%D1%80%D0%BE%D0%B2%20-%20%D0%9C%D0%BE%D1%80%D1%81%D0%BA%D0%B0.mp3

А в опере в которой играет cp1251


/audio/%C4%EE%EC%20%C2%E5%F2%F0%EE%E2/%CA%E8%F2%EE%E1%EE%E9/%C4%EE%EC%20%C2%E5%F2%F0%EE%E2%20-%20%CC%EE%F0%F1%EA%E0.mp3
A4
На сайте с 05.01.2012
Offline
55
#22
А в опере в которой играет cp1251

При выводе ссылки используется код:

$url = iconv('windows-1251','UTF-8',$arr['url']);

это вроде как преобразовывает из вин в утф, или нет?)

= к тому же в файле прописан header('Content-type: text/html; charset=utf-8');

хотя по умолчанию все аякс запросы в утф идут...

Я же говорю - как только не вертел...

Я вообще не знаю с чем связан тот факт что в опере таки играет...

Согласившись с вашим предоположением таки наваял в файле urlencode.php

$get = iconv('windows-1251','UTF-8',$_GET['file']);

Не играет. хоть тресни зарраза под хромом не играет.(надо заметить на денвере везде нормально играет и тут rotmaister.narod2.ru тоже. Последнее - это собственно проигрыватель который я наваял. Вывод - ошиппка не в яваскрипте...))

______________

к слову играет там не везде, и не всегда. я каждые 5 минут что-то правлю. Играют треки исполнителей, например тут можно послушать:http://aftamat4ik.ru/unt.php#authorname=Грот.

На главной нельзя - там у меня другой скрипт за все отвечает,и там ничего не подправлено, пока...

siv1987
На сайте с 02.04.2009
Offline
427
#23
= к тому же в файле прописан header('Content-type: text/html; charset=utf-8');

До фени.

это вроде как преобразовывает из вин в утф, или нет?)

Вроде как перекодирует... Кириллица в путях и именах файлах всегда было извращением и пляска с бубнами.

Я вообще не знаю с чем связан тот факт что в опере таки играет...

Выше же написано, играет потому что в опере урленкодится строка из cp1251, хром из utf-8. http://aftamat4ik.ru/audio/%C4%EE%EC%20%C2%E5%F2%F0%EE%E2/%CA%E8%F2%EE%E1%EE%E9/%C4%EE%EC%20%C2%E5%F2%F0%EE%E2%20-%20%CC%EE%F0%F1%EA%E0.mp3

И даже то что в опере работает здесь, не факт что на другом сервере тоже будет работать.

A4
На сайте с 05.01.2012
Offline
55
#24
zhitov:
Не бывает неполноценных переходов... :) - они или есть, или их нет.
Ваш js-проигрыватель запрашивает файл у сервера (и получает его - вполне "полноценно") => хтакесс отдает не сам файл, а файл urlencode.php, который, в свою очередь делает что хочет...

Точно) что то я совсем... ладно судя по всему "магического" способа не существует. придется методом "я в танке" менять всю базу данных и писать скрипт по переименовыванию папки, после занесения ее названия в бд...

---------- Добавлено 12.06.2012 в 22:00 ----------

siv1987:

...cp1251...

Аха! так щщас. То есть надо попробовать переделать урл в cp-1251. К стати я это уже делал) вроде не прокает, щас еще раз...

siv1987
На сайте с 02.04.2009
Offline
427
#25
Согласившись с вашим предоположением таки наваял в файле urlencode.php
$get = iconv('windows-1251','UTF-8',$_GET['file']);

То есть эту обработку применяете ко всем запросам? А что будет если один например идет в windows-1251, другой в utf-8? Как вариант поменяйте их местами.

Аха! так щщас. То есть надо попробовать переделать урл в cp-1251. К стати я это уже делал) вроде не прокает, щас еще раз...

cp1251 и windows-1251 это одно и тоже.

A4
На сайте с 05.01.2012
Offline
55
#26

В общем поменял на это:

$get = iconv('UTF-8','windows-1251',$_GET['file']);

И вы не поверите! Произошло чудо. Все 3 броузера наконец то сошлись на 1 - в них музыка не играет!))

гет запрос и так в утф передается, я его 2 раза в 1 и ту-же кодировку переводил - это было не правильно, но косяков не вызывало, что естественно. Теперь же я возвратил ссылку в win-1251,ясное дело она не заиграет)) Может наоборот о_0 хром как раз в cp-1251 урл читает а 2 остальных в утф? Хотя нет. под хромом же тоже не воспроизводит...

И вообще почему не эскейп! строка вида /audio/Дом Ветров/ в хроме выглядит так: /audio/Дом%20Ветров/ Ну я какбэ знаю что %20 - это код пробела(в escape последовательности), но в файрфоксе и опере ссылка без этого символа,а в хроме с ним. Как уже говорилось ссылка не подвергалась php urlencode(); Хотя проблемма не в %20, потому что из папки Катарсис тоже не играет хД

---------- Добавлено 12.06.2012 в 22:15 ----------

aftamat4ik:
cp1251 и windows-1251 это одно и тоже.

Знаю. и к стати правильно писать cp-1251, именно через тире( на хабре вчера прочел де-то) и utf-8, тоже через тире:)

---------- Добавлено 12.06.2012 в 22:27 ----------

siv1987:
То есть эту обработку применяете ко всем запросам? А что будет если один например идет в windows-1251, другой в utf-8? Как вариант поменяйте их местами.

я же говорю - ВСЕ аякс запросы то есть Get и Post кодируются(сразу) в утф-8, хочешь ты этого или нет. То есть здесь почему то все броузеры(даже о ,нет интернет эксплорер!) имеют единое мнение. Можно передавать строку хоть в ср-1251 она все равно в утф будет преобразована, и на обработчике придется писать так:

$get = iconv('UTF-8','windows-1251',$_GET['file']);

как к стати у меня и написано, но у меня сайт на утф-8 сделан, а значит это без надобности.

Если требуется передать данные в запросе какой-либо другой(специальной) кодировкой надо юзать это:

header('Content-type: text/html; charset=ср-1251');

У меня таких строк ни в 1 скрипте никогда не появится)

siv1987
На сайте с 02.04.2009
Offline
427
#27
Знаю. и к стати правильно писать cp-1251, именно через тире( на хабре вчера прочел де-то) и utf-8, тоже через тире

Наверное поэтому у вас все получается, что много читаете. http://www.google.ru/search?client=opera&rls=ru&q=cp1251&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest

гет запрос и так в утф передается

Гет запрос не передается в "utf", передается закодированная строка http://ru.wikipedia.org/wiki/URL#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_URL

A4
На сайте с 05.01.2012
Offline
55
#28

Господа... проблема решена) Всего 2 часа мучений и вот он - результат. Оказалось что править по сути надо не так много)(самодовольство - хороший код все же я написал, хотя вы его конечно не видели...) Метод 'я в танке' сработал. Я убрал все кирилические адреса и прочие заморочки. Да мы победили в великой отечественной, но интернет придумали янки(или применили на практике) => придется все их буквами ковать... Скрипт получился небезопасный, из него можно такого наворотить.(из-за этого придется хранить бэкап папки audio, а она исходя из размаха проекта будет не маленькая...) Зато пашет безотказно, как автомат. Зря я вас кодировкой грузил если честно. Всегда хочешь как прощще - а получается как всегда)) Надо было еще вчера накатать, а я до 3 в варике проторчал)

В общем проект переносится с домена aftamat4ik на вдс, и там допиливается, заливаются треки и прочее. Потом уже идет сео, так что я еще вернусь) Блин очково завтра в универ идти - опять мозг лечить станут)) К стати как вы думаете на кого я учусь? хД На Зоотехнега. Это гинеколог для коровы(в общем смысле работы). Почему?) - тут так как в крупных гордящихся своей репутацией университетах не мучают. И тут я крепко взял их за горло)) Ясное дело быть зоотехником я никогда в жизни не мечтал, и смотреть на то как рожает корова - тоже. поэтому пытаюсь девелопить, и вроде выходит потихоньку)

Хотя зачем все это рассказывать.

короче я за работу удачи всем)

______________________

В глубоком трансе...

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#29

Вы руками чтоли переименовывать собрались? Напишите скрипт который это сделает за вас. В тырнете уже есть готовые шаблоны для транслитерации рус-англ и обратно. Пройдите в цикле по директории где лежат Ваши папки с русскими названиями, и да будет Вам счастье.

Подпись))
A4
На сайте с 05.01.2012
Offline
55
#30

Я как раз так и сделал) Правда без транслита, слегка сложнее, зато быстрее.

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

Буквально пришлось добавить ок 15 сторок кода, и остальное чуть чуть подправить.

Цифры рулят. В цикле все и раньше проходилось(а как я по вашему все в бд добавлял?))

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий