myoperam Кириллица и JavaScript не дружат
ВНИМАНИЕ! ОСТЕРЕГАЙТЕСЬ МОШЕННИКОВ!
Помните, что все браузеры Opera АБСОЛЮТНО БЕСПЛАТНЫ.
Загружайте новые версии ТОЛЬКО С ОФИЦИАЛЬНОГО САЙТА или с ресурсов, которым ДОВЕРЯЕТЕ!


Предыдущее | Следующее | Архив форума | operaman.ru | Поиск
Кириллица и JavaScript не дружат Gargoyle  12/20/04 05:10 PM

Доброго времени суток!

Возможно, кто-нибудь знает решение, помогите, пожалуйста!

У меня есть страница html, внешний файл js

в файле js.js:



Code:
 var txt="Добрый вечер!";



в файле html.html:

Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="TEXT/HTML CHARSET=Windows-1251">
<META HTTP-EQUIV="content-language" CONTENT="ru">
<TITLE></TITLE>
<script language="javascript" src="js.js" type="text/javascript"></script>
</HEAD>
<BODY>
<p>Привет</p>
<script language="javascript">
write( txt );
</script>
</BODY>
</HTML>



Почему текст "Привет" отображается нормально, кириллицей, а "Добрый вечер"-- мусором? Как с этим бороться?
Такое наблюдается ТОЛЬКО в Опере 7, а в Эксплорере и Мозилле такой проблемы нет.

Заранее благодарю.


Re: Кириллица и JavaScript не дружат VVSite  12/21/04 02:23 PM

Загляни сюда: _//www.post.lg.ua/_ - Открой ссылку Online-каталог. Сделано на JavaScript: исходный файл большой: около 300KB. Но работает все нормально.

Re: Кириллица и JavaScript не дружат Gargoyle  12/25/04 07:53 PM

разобрался, понял:
Опера правильно определяет кодировку ЗАГРУЖЕННОГО документа, а распространить это мнение на вложенные файлы не хочет.

вот функция, которая это дело исправляет:

function uni(txt,lang){
if((!lang)&&(navigator.userAgent.indexOf("Opera")==-1)) return txt;
var page=848;
if(!lang) page=848;
if(lang=='ru') page=848;
var txt2="";
for(var i=0;i<txt.length;i++)
if(((txt.charCodeAt(i)>=192)&&(txt.charCodeAt(i)<=223))||((txt.charCodeAt(i)>=224)&&(txt.charCodeAt(i)<=255)))
{txt2+=String.fromCharCode(page+txt.charCodeAt(i));}
else
{txt2+=String.fromCharCode(txt.charCodeAt(i));}
return txt2;
}


А еще лучше сразу посылать unicode стринги типа

var txt="\u2048\u2048";



operaman.ru - Home


Rambler's Top100