Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JavaScript + UTF = sad story? (https://javascript.ru/forum/misc/6244-javascript-utf-%3D-sad-story.html)

rkwdv 19.11.2009 18:48

JavaScript + UTF = sad story?
 
Добрый вечер люди, у всех нижеприведенный скрипт выводит -1 или только у меня дурака? Как сделать, чтобы нужная строка все же была найдена?

<html>
<body>
<script type="text/javascript">

var str="Глава 1. Турбирование 6 коней";

document.write(str.search(/тур/i));

</script>
</body>
</html>

Riim 19.11.2009 18:50

Цитата:

Сообщение от rkwdv
у всех нижеприведенный скрипт выводит -1

у меня "9". IE8, Chrome.

rkwdv 19.11.2009 18:54

Ubuntu 9.10, Firefox 3.5.5. Что я делаю не так? Принудительно выставил кодировку на странице, но не помогло:
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf8">
</head>
<body>

<script type="text/javascript">

var str="Глава 1. Турбирование 6 коней";

document.write(str.search(/тур/i));

</script>
</body>
</html>

rkwdv 19.11.2009 18:58

Цитата:

Сообщение от Riim (Сообщение 35730)
у меня "9". IE8, Chrome.

Т.е. это проблема исключительно Firefox?

e1f 19.11.2009 19:07

Цитата:

Сообщение от rkwdv (Сообщение 35728)
у всех нижеприведенный скрипт выводит -1

В консоли фаербага -- 9. В ИЕ в адресной строке -- тоже 9:
javascript:alert("Глава 1. Турбирование 6 коней".search(/тур/i));void(0)

rkwdv 19.11.2009 19:09

Цитата:

Сообщение от e1f (Сообщение 35741)
В консоли фаербага -- 9. В ИЕ в адресной строке -- тоже 9:
javascript:alert("Глава 1. Турбирование 6 коней".search(/тур/i));void(0)


Страница на http://javascript.ru сообщает:

-1

Набирал в консоли Firebug.

Riim 19.11.2009 19:10

ignoreCase почему-то не работает. А вот здесь работает:
str.search(/[р-т]/i)


Плохо все это.

Может так: str.toLowerCase().search ?

Да, и еще в некоторых версиях Chrome ignoreCase для Русских букв вообще не работает. Поэтому я сейчас пишу так: "/[a-zА-Яа-я]/i" .

rkwdv 19.11.2009 19:12

Цитата:

Сообщение от Riim (Сообщение 35744)
ignoreCase почему-то не работает. А вот здесь работает:
str.search(/[р-т]/i)


Плохо все это.

Может так: str.toLowerCase().search ?

Да, и еще в некоторых версиях Chrome ignoreCase для Русских букв вообще не работает. Поэтому я сейчас пишу так: "/a-zА-Яа-я/i" .


javascript:alert("Глава 1. Турбирование 6 коней".toLowerCase().search(/тур/i));void(0)

заработало как надо. Спасибо большое. Согласен, что это плохо - и даже очень плохо. Это проблема браузера или операционной системы?

Riim 19.11.2009 19:15

А "void(0)" зачем?

Цитата:

Сообщение от rkwdv
Это проблема браузера или операционной системы?

ну, вообще это теперь наша проблема, но если выбирать только между браузером и ОС, то браузер виноват.

rkwdv 19.11.2009 19:19

Цитата:

Сообщение от Riim (Сообщение 35747)
А "void(0)" зачем?


ну, вообще это теперь наша проблема, но если выбирать только между браузером и ОС, то браузер виноват.


Попробую написать на форум поддержки Firefox, а то не знают наверное.


Часовой пояс GMT +3, время: 16:29.