| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > innerHTML и кириллица |
| Автор: sidd 26.7.2008, 01:44 |
| У меня через innerHTML в div вставляется некоторый текст. Но если вставлять кириллицу, то кодировка ломается. Вместо нужного текста отображается что-то типа такого: Видео. Кодировки этого текста и самой страницы одинаковые — CP1251. Причем это происходит только в Опере, в Firefox'е все нормально. С помощью Декодера Лебедева выяснил, что это строка, переведенная UTF-8. Почему же Opera его переводит в UTF? И как это можно исправить? |
| Автор: 12345c 26.7.2008, 02:26 |
| Не могли бы Вы выложить пример? Никто же не будет сам воспроизводить дефект. |
| Автор: bars80080 26.7.2008, 08:45 |
| у меня подобная вещь была при обмене с сервером запросами аякс. причём на всех браузерах и по разному, притом и запросы на кирилице тоже сбивалась кодировка удалось исправить системой конвертации. в общем случае rawurlecode(); на стороне сервера и decodeURIComponent() на клиенте |
| Автор: skyboy 26.7.2008, 09:16 |
разве - по-разному? мне помнится, что xmlhttprequest всегда идет в utf-8... |
| Автор: bars80080 26.7.2008, 15:06 |
| да чёрт его знает, как оно там было. просто в одном случае ИЕ работал, в другом ФФ вообще там получилась целая лесенка: запрос-encodeURIComponent-(сервер: rawurldecode-iconv(utf-8, cp1251)-выборка-iconv(cp1251,utf-8)-rawurlencode)-decodeURIComponent каким макаром он возвращает это всё в кирилицу вин-1251 в итоге - не знаю, но работает |
| Автор: sidd 26.7.2008, 19:01 | ||||||
Я, кажется, понял, из-за чего глюк происходит. Написал отдельно вот такую вот страничку со скриптом:
В результате при клике на ссылку test, в div вставляется строка с поломаной кодировкой. Но если в div вставлять не переменную text, которая передается функции, а присвоить текст напрямую, вот так:
то тогда работает. И так тоже работает:
Короче, глюк происходит, если передавать переменную при вызове функции. В моем случае как раз так и сделано. |
| Автор: Sanchezzz 28.7.2008, 07:12 |
| самопальный AJAX по умолчанию использует utf-8 пользуйся jshttprequest гемора меньше поддерживает перекодирование... + крос-браузерный. |
| Автор: Viroman 28.7.2008, 17:06 | ||
А как насчёт такого подхода, просто у меня оба варианта под оперой работают, даже твой.
|
| Автор: sidd 28.7.2008, 21:19 | ||
Ок, попробую. Viroman, нет, так тоже не работает. Может, у вас просто на странице кодировка UTF-8 установлена? |
| Автор: Sanchezzz 29.7.2008, 06:14 | ||||
а по чему у вас так
должно быть вот так
|