Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> innerHTML и кириллица 
:(
    Опции темы
sidd
Дата 26.7.2008, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 7.10.2006
Где: Киев

Репутация: нет
Всего: нет



У меня через innerHTML в div вставляется некоторый текст. Но если вставлять кириллицу, то кодировка ломается. Вместо нужного текста отображается что-то типа такого: Видео. Кодировки этого текста и самой страницы одинаковые — CP1251. Причем это происходит только в Опере, в Firefox'е все нормально. С помощью Декодера Лебедева выяснил, что это строка, переведенная UTF-8. Почему же Opera его переводит в UTF? И как это можно исправить?
PM MAIL WWW ICQ Skype Jabber   Вверх
12345c
Дата 26.7.2008, 02:26 (ссылка) |   (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Не могли бы Вы выложить пример? Никто же не будет сам воспроизводить дефект.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
bars80080
Дата 26.7.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



у меня подобная вещь была при обмене с сервером запросами аякс. причём на всех браузерах и по разному, притом и запросы на кирилице тоже сбивалась кодировка
удалось исправить системой конвертации. в общем случае rawurlecode(); на стороне сервера и decodeURIComponent() на клиенте
PM MAIL WWW   Вверх
skyboy
Дата 26.7.2008, 09:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Цитата(bars80080 @  26.7.2008,  07:45 Найти цитируемый пост)
причём на всех браузерах и по разному

разве - по-разному? мне помнится, что xmlhttprequest всегда идет в utf-8...
PM MAIL   Вверх
bars80080
Дата 26.7.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 15
Всего: 315



да чёрт его знает, как оно там было. просто в одном случае ИЕ работал, в другом ФФ
вообще там получилась целая лесенка: запрос-encodeURIComponent-(сервер: rawurldecode-iconv(utf-8, cp1251)-выборка-iconv(cp1251,utf-8)-rawurlencode)-decodeURIComponent
каким макаром он возвращает это всё в кирилицу вин-1251 в итоге - не знаю, но работает
PM MAIL WWW   Вверх
sidd
Дата 26.7.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 7.10.2006
Где: Киев

Репутация: нет
Всего: нет



Я, кажется, понял, из-за чего глюк происходит. Написал отдельно вот такую вот страничку со скриптом:
Код
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=cp1251">
  <script language="javascript">
    function test(text) {
      elem = document.getElementById('test');
      elem.innerHTML = text;
    }
  </script>
</head>
<body>
<div id="test"></div>
<a href="javascript: test('блаблабла');">test</a>
</body>
</html>

В результате при клике на ссылку test, в div вставляется строка с поломаной кодировкой.
Но если в div вставлять не переменную text, которая передается функции, а присвоить текст напрямую, вот так:
Код

elem.innerHTML = 'блаблабла';

то тогда работает. И так тоже работает:
Код
text = 'блаблабла'
elem.innerHTML = text;

Короче, глюк происходит, если передавать переменную при вызове функции. В моем случае как раз так и сделано.

Это сообщение отредактировал(а) sidd - 26.7.2008, 19:17
PM MAIL WWW ICQ Skype Jabber   Вверх
Sanchezzz
  Дата 28.7.2008, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60



самопальный AJAX по умолчанию использует utf-8

пользуйся jshttprequest гемора меньше поддерживает перекодирование... + крос-браузерный.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Viroman
Дата 28.7.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



А как насчёт такого подхода, просто у меня оба варианта под оперой работают, даже твой.
Код


<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=cp1251">
  <script language="javascript">
    var testtext="";
    function test() {
      elem = document.getElementById('test');
      elem.innerHTML = testtext;
    }
  </script>
</head>
<body>
<div id="test"></div>
<a href="javascript: testtext='блабля',test();">test</a>
</body>
</html>

PM MAIL   Вверх
sidd
Дата 28.7.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 7.10.2006
Где: Киев

Репутация: нет
Всего: нет



Цитата
пользуйся jshttprequest гемора меньше поддерживает перекодирование... + крос-браузерный.

Ок, попробую.

Viroman, нет, так тоже не работает. Может, у вас просто на странице кодировка UTF-8 установлена?
PM MAIL WWW ICQ Skype Jabber   Вверх
Sanchezzz
  Дата 29.7.2008, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60



а по чему у вас  так 
Цитата

<meta http-equiv="Content-Type" content="text/html; charset=cp1251">

должно быть вот так  
Код

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.