Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.08.2009, 23:43
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

проблема с кодировкой
проблема такая
по клику на кнопку делается аякс запрос.
в серверной части или по другому в файле обработчике запроса
php код который считывает из базы данных инфу и выводит ее в
таблицу. запрос работает во всех трех браузерах, только правда
в опере работает нормально, в мозилле вместо русских символов
значки вопроса а в эксплорере по видимому кодировка почему то
utf8, подскажите как мне установить нужную кодировку именно в
файле обработчике. Хотя при подключении к базе в индексном файле
я устанавливаю кодировку cp1251, я так понимаю эти установки не работают в том файле.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2009, 12:27
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

отвечаю сам:
нужно вставить в начале серверной части
header("Content-type:text/xml; charset=windows-1251");
строка устанавливает кодировку для ответа на запрос
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2009, 12:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от bushstas
отвечаю сам:
Это надо было в самом начале сделать, ибо даже на этом форуме (сравнительно молодом) уже устали на этот вопрос отвечать. А в поиск вас пошлешь, вы ж обидитесь, вот все и берегут ваши нервные клетки.
Ответить с цитированием
  #4 (permalink)  
Старый 01.10.2009, 18:24
i am Dave
 
Сообщений: n/a

Что значит "в начале серверной части"???
Ответить с цитированием
  #5 (permalink)  
Старый 02.10.2009, 13:55
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от i am Dave
Что значит "в начале серверной части"???
Что значит "серверная часть"???
Ответить с цитированием
  #6 (permalink)  
Старый 02.10.2009, 15:05
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,582

Сообщение от B~Vladi Посмотреть сообщение
Что значит "серверная часть"???
Я думаю ТС говорил об отправке заголовка в начале php скрипта.
(серверной части всей этой истории)
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2009, 18:21
I am Dave
 
Сообщений: n/a

не...не работает(((
в общем виде у меня так:
...
header("Content-Type: text/html; charset=windows-1251");
readfile("ajax-chat-file.txt");
...
что здесь не то??
Ответить с цитированием
  #8 (permalink)  
Старый 03.10.2009, 00:48
Интересующийся
Отправить личное сообщение для alexeews Посмотреть профиль Найти все сообщения от alexeews
 
Регистрация: 28.09.2008
Сообщений: 12

Предположим, что у нас имеется некоторый js объект, основной функцией которого является отправка ajax запросов. ( Для определённости назовём его ajaxObj, запрос выполняется методом ajaxObj.query() ). Пусть для отправки данных серверу нам необходимо передать методу query() js объект в виде пар ключ значение. Пример:

var data = { key_1: ‘some_data_1’, 
             key_2:’some_data_2’ … 
           };
.

JS работает с кодировкой utf-8, а на сервере в большинстве случаев имеем windows-1251. Для корректной передачи данных от сценария JS их нужно закодировать. Таким образом наш JS запрос будет выглядеть так:

ajaxObj.query( { key_1 : encodeURIComponent( ‘some_data_1’ ), 
                 key_2 : encodeURIComponent( ‘some_data_2’ ), 
                 key_3 : encodeURIComponent( ‘some_data_3’ )… 
             } );


Приём данных сервером.

Пусть заранее известно, что на сервере используется PHP, кодировка windows-1251, а данные предаются методом POST ( через массив $_POST ). Тогда, чтобы получить адекватные данные используем следующий код:

foreach ( $_POST as &$v ) {
    if ( !is_int( $v ) )
       $v = iconv( 'utf-8', 'windows-1251', urldecode( $v ) );
}


Далее работаем с массивом $_POST, так как будто передача шла не через JS, а как обычно.
Пусть в результате серверных операций мы получили массив $result, данные которого нам нужно вернуть в JS скрипт. Поступаем с точностью да на оборот.

foreach ( $result as &$v ) {
    if ( !is_int( $v ) )
        $v = iconv( 'windows-1251', 'utf-8', $v );
}


Далее посылаем заголовок, в котором указываем, что данные будут отправлены в UTF-8 ( В данном конкретном случае в заголовке по мимо кодировки указано, что данные будут отправлены в формате json)

header("Content-Type: x-json; charset=UTF-8");


А затем отправляем сами данные. ( функции jencode – не существует, я просто хочу сказать что в данном случае массив $result кодируется в json формат, для решения этой задачи существуют PHP библиотеки, а в PHP 5 есть встроенная функция. )

echo jencode( $result );
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47
Проблема с кодировкой в скрипте автозаполнения Maratka AJAX и COMET 12 24.01.2009 12:31
Проблема с кодировкой magistr_bender Общие вопросы Javascript 2 07.09.2008 20:04
Проблема с кодировкой. SunYang Общие вопросы Javascript 12 05.08.2008 14:40