Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

кодировки js

347
29 января 2012 года
Maniak
319 / / 05.11.2005
Здравствуйте! Есть небольшой код с использованием jQuery:
Код:
$(document).ready(function(){
        $("#selcity").keypress(function(e){
            $.ajax({
                     type: "POST",
                     url: "script.php",
                     cache: false,
                     data: "varstr="+$(this).val()+String.fromCharCode(e.which),
                     success: function(msg){
                        alert(msg);
                     }
            });

        });
      });


и сам script.php
 
Код:
<?php
header( 'Content-Type: text/html; charset=windows-1251' );
$varstr=mysql_real_escape_string($_POST['varstr']);
echo $varstr;
?>


Так вот, в alert(msg) мы получаем (при вводе русских букв) каракули из за несовпадения кодировок где то... видимо из за String.fromCharCode, т.к. она все пишет в UTF-8. Как выйти из ситуации?
4
29 января 2012 года
mike
3.7K / / 01.10.2002
При работе с Ajax забудь про windows-1251. Только UTF-8.

 
Код:
<?php
$varstr=iconv('windows-1251','utf-8',mysql_real_escape_string($_POST['varstr']));
echo $varstr;
?>


И еще, mysql_real_escape_string - только перед добавлением в базу, htmlspecialchars при отдаче клиенту.
347
29 января 2012 года
Maniak
319 / / 05.11.2005
Блин, не помогает(
12
29 января 2012 года
alekciy
3.0K / / 13.12.2005
Люди использующие в рунете кодировку отличную от utf8 должны быть всячески порицаемы и быть преданы анафеме.

1) Убедись, что все, сключая сами скриты закодированно в utf-8.
2) Сервер, отдающий код скрипта не добавляет charset=windows-1251
3) Для начала убери из data все fromCharCode и запиши туда тупо какой либо текст кириллицей.
347
29 января 2012 года
Maniak
319 / / 05.11.2005
да, видимо проблема не только в fromCharCode, если изменить на data: "varstr=привет",
- то скрипт отдает тоже непонятные символы....
Все скрипты в ANSI нет никаких utf-8
347
29 января 2012 года
Maniak
319 / / 05.11.2005
помогло вот так:
 
Код:
<?php
header( 'Content-Type: text/html; charset=windows-1251' );
$varstr=iconv('utf-8','windows-1251',mysql_real_escape_string($_POST['varstr']));
echo $varstr;
?>
347
29 января 2012 года
Maniak
319 / / 05.11.2005
и еще вопрос, почему код не реагирует на backspace?
Код:
$(document).ready(function(){
        $("#selcity").keypress(function(e){
            $.ajax({
                     type: "POST",
                     url: "script.php",
                     cache: false,
                     data: "varstr="+$(this).val()+String.fromCharCode(e.which),
                     success: function(msg){
                        alert(msg);
                     }
            });

        });
      });
12
30 января 2012 года
alekciy
3.0K / / 13.12.2005
mike тебе уже говорил, что использовать mysql_real_escape_string это полный бред. Мне кажется, что стоит к этому прислушаться и почитать документацию в том числе.
277
30 января 2012 года
arrjj
1.7K / / 26.01.2011
Спец кнопки нужно проверять не на charcode а на keycode.
347
01 февраля 2012 года
Maniak
319 / / 05.11.2005
Цитата: alekciy
mike тебе уже говорил, что использовать mysql_real_escape_string это полный бред. Мне кажется, что стоит к этому прислушаться и почитать документацию в том числе.



хочется уточнить - а как же мне тогда передавать данные в sql запрос? нефильтровальными?

12
01 февраля 2012 года
alekciy
3.0K / / 13.12.2005
Цитата: Maniak
хочется уточнить - а как же мне тогда передавать данные в sql запрос? нефильтровальными?


Фильтруй. Но не внутри iconv. Определи одно место где у тебя происходит фильтрация и там это делай. Сейчас же у тебя код-лапша.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог