Я недавно установил Winamp Song Requester, являющийся плагином для повторного использования веб-песен Winamp со встроенным минимальным HTTP CGI-сервером.
Что делает плагин, так это то, что он запускает веб-сервер, обслуживает страницу html с некоторыми специальными переменными, которые заменяют фактическими данными по запросу (список воспроизведения, очередь запросов, время, оставшееся в песне и т. Д.).
Я видел это как забавный и хороший проект, чтобы изучить некоторые jQuery, поэтому я начал подключать свой собственный js-код для замены, исправления и ajaxify обслуживаемого веб-сайта из плагина, но теперь у меня возникла проблема с кодировкой символов ,
На странице вы получаете ссылки на все песни в плейлисте. Когда вы нажимаете на одну из ссылок, я подключил собственную функцию jQuery click. Поэтому вместо перезагрузки всей страницы, когда вы запрашиваете песню, я делаю $ .get ($ (this) .attr ('href', function (response) {... code ...}), а затем я использую replaceWith для замените текущую очередь новой сгенерированной очередью, добавив ваш запрос «на лету». Я делаю то же самое, чтобы показывать/обновлять текущую игру и поиск, чтобы все получилось в фоновом режиме, а затем заменено «на лету» с добавлением некоторых анимаций.
все JQuery/Ajax работает, но большая проблема у меня есть, с кодировкой и название песни в очереди/воспроизведения. Специальные символы (åäöé и т.д.) в именах не работает.
плагин выводит все в iso-8859-1/latin1, а мой метатег в разметке сообщает браузеру, что эта страница является латинской 1. На обычном обновлении страницы в e браузер работает хорошо, а специальные символы отображаются как обычно. Но когда я использую jQuery и $ .get() для замены блоков кода на лету, специальные символы отображаются только как.
Я думаю, что проблема заключается в том, что по умолчанию jQuery полагает, что ответ $ .get() - это UTF-8, если ни один заголовок не говорит иначе. Плагин не устанавливает никакого заголовка для кодировки/кодировки вообще, и поскольку у меня нет никакого контроля над всем файлом и какие заголовки установлены, я не могу это изменить.
Единственные заголовки, которые я получаю в ответ от плагина:
Сервер: WinampServer
Подключение: закрыть
Content-Type: Текст/HTML
Я надеюсь, вы понимаете, моя проблема. У меня есть страница, на которой у меня нет контроля над бэкэнд, и все, с чем я должен работать, - это созданный HTML. Я не могу изменить или добавить заголовки в ответах. Мне нужно сообщить jQuery, что ответ на самом деле находится в latin1, а не в UTF-8, так что кодировка специальных символов не прерывается. Я пробовал сценарийCharset: 'iso-8859-1' в jQuerys ajaxSetup, но работает только с типом script/json, и я работаю с ответами HTML.
Любая идея, если это возможно или любое другое обходное решение, о котором вы могли подумать?
Я тоже пробовал, но это, похоже, не помогает. Я думаю, что только кодирует данные, которые вы отправляете, а не кодировку данных, полученных в ответ. – 2008-12-01 10:03:06