Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с кодировкой, при использовании JSON и AJAX на яваскри 
:(
    Опции темы
dmitryk1
Дата 6.10.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



написал тестовый скрипт, который выводит данные из таблички. Используются классы которые я отлаживал ранее.

Код

#!/usr/bin/perl -w

use CGI::WebOut;
use CGI::WebIn(1);
use JSON;
use lib qw(.); 

use dbora;

my $sql=dbOra->new();

$sql->conn('conname');

print to_json($sql->query('select * from operators '));




при вызове из строки браузера получается нормальный JSON, русские буквы, в общем всё отлично.
при вызове из страницы:

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

  <head>
  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript">
  <!--

  function testJSon(){
            $.get("http://10.2.8.18:8088/cgi-bin/test.pl",
                function(data){
                debugger;
                var u=eval(data);
                alert("!");
                });            
  }
  //-->
  </script>
  <title>Stock List</title>
  </head>
  <body> 
    <script language="JavaScript">
      testJSon();
    </script>
  </body>
  </html>


в отладчике вижу что-то вроде: 

"[[\"????\"???????\"??????????\"user1\",\"pwd\",null,\"0\",\"2\",\"Y\",null,null,null,null,null,\"06\",\"08\",\"00\",null,\"1\"],[\"????\",\"??,\"????\",\"???? ??????\",\"user2\",\"pwd\",null,\"0\",\"2\",\"Y\",null,null,null,null,null,\"06\",\"08\",\"00\",null,\"1\"]]"

только не вопросики, а квадратики.

страничка по умолчанию открывается в виндовс кириллице, база открывается кодировкой - CL8MSWIN1251.

может для аякса нужно отправлять с каким-нить хитрым заголовком? Потому как тестовый пример открыл когда в броузере. тот открылся как файл photos_public.gne 

PM MAIL GTalk Jabber   Вверх
KSURi
Дата 6.10.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



JSON должен быть только в utf8, насколько я знаю


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
ginnie
Дата 6.10.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



KSURi, не обязательно, важно, чтобы сервер отдавал заголовок с кодировкой, причем лучше указывать windows-1251 вместо cp1251.

dmitryk1, модуль CGI::WebOut выдает заголовок Content-Type и что он в нем прописывает?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
KSURi
Дата 9.10.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ginnie, по хорошему - должен. Согласно RFC 4267 (параграфы 3 и 6) MIME-тип JSON-ответа должен быть таким:
application/json; charset=utf8; (также возможны utf16/32)


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
ginnie
Дата 9.10.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



KSURi, согласен с Вашими доводами! Только вопрос, если у меня страница в windows-1251 и мне надо вывести данные, полученные в формате JSON, что я должен делать? Выводить в страницу данные в utf8? Конвертировать в windows-1251?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
KSURi
Дата 9.10.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ginnie @  9.10.2008,  11:18 Найти цитируемый пост)
Выводить в страницу данные в utf8?

Ага)


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
dmitryk1
Дата 13.10.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ginnie @ 6.10.2008,  16:47)
KSURi, не обязательно, важно, чтобы сервер отдавал заголовок с кодировкой, причем лучше указывать windows-1251 вместо cp1251.

dmitryk1, модуль CGI::WebOut выдает заголовок Content-Type и что он в нем прописывает?

Я был в твёрдой уверенности что если не указывать заголовков то апач выдаёт их в той кодировке, в которой сам скрипт написан, поэтому кодировку не указывал специально. Тем более тогда с базой воевал, и получал по умолчанию в кодировке файла а не в кодировке ответа от базы.

добавил в текст скрипта:
Код


Header("Content-type: text/plain; charset=windows-1251");



и всё починилось заработало

соответственно используется ещё и 
Код




PM MAIL GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




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


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

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