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