Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > помогите разобраться с кодировкой AJAX и PERL |
Автор: evya 19.4.2009, 10:30 | ||||
Уважаемые господа програмисты! Помогите разобратся, опыта в передачах через AJAX мало., знаю что он работает только с UTF-8, на самому не получается разобратся итак есть форма, необходимо ее вывести в реальном времени на страницу при заполнении. В итоге выводятся символы в неизвестной кодировке Думаю проблема, что форма отправляется с СР а аякс принимает только в UTF, и так же с перлом при выводе. пожалуйста поправьте код. ![]() HTML:
Скрипт:
на сайте http://1m65.ru/ajax.html |
Автор: GoDleSS 19.4.2009, 20:43 | ||
Даже без проверки:
должен идти в контейнере <head></head> Также проверьте правильную выдачу кодировки сервером |
Автор: evya 20.4.2009, 05:46 |
Даже если писать его в контейнере head, все равно кодировка неправильна |
Автор: KSURi 20.4.2009, 10:48 | ||||||
попробуйте заменить на
|
Автор: pompei 20.4.2009, 11:16 | ||
а можно по другому: просто сам файл преобразовать в утф8. Выбирайте что удобнее |
Автор: evya 20.4.2009, 13:04 |
Это понятно, так я отправляю в кодировке cp, -как мне преобразовать в Java из ср в утф, и обратно при получении ответа из perla, из UTF в СР в какой часте Java это делать нужно помогите примером |
Автор: pompei 21.4.2009, 09:26 | ||
Если ваш файл в cp1251 кодировке, то надо так
нужно ещё установить модуль Convert::Cyrillic, например с CPAN-а: http://search.cpan.org/~jneystadt/cyrillic-1.05/Convert/Cyrillic.pm как устанавливать модули перла в винде смотрите в гугле (там есть пошаговые инструкции) |
Автор: shamber 21.4.2009, 09:46 |
на этом сайте тоже есть инструкции по установке |
Автор: kavkaz 21.4.2009, 13:40 |
Господа, а разве ответ ajax'у обязательно должен приходить в utf8 ? я понимаю что это может быть настоятельная рекомендация, но не панацея же. Наверняка у многих есть проекты в cp1251 и там же используется cp1251 Уважаемый evya, у вас скрипт, к которому обращается javascript (http://1m65.ru/cgi-bin/ajax.pl) сам по себе вроде как отдается без чарсета вам тут уже неоднократно советовали выставить хидер. Отладьте сначала отдельно ваш скрипт /cgi-bin/ajax.pl, чтоб он отдавал все в нужной вам кодировке Затем пробуйте посылать к нему запросы через ajax Для облегчения жизни при работе с javascript'ом, в частности с ajax'ом советую использовать какие нибудь фреймверки (например jquery) Проверьте в какой кодировке приходят данные к /cgi-bin/ajax.pl Убедитесь что /cgi-bin/ajax.pl отдает ответ в нужной кодировке не бойтесь если приперло пользоваться use Encode есть так же полезная функция utf8::is_utf сугубо личный совет: если нет острой необходимости, лучше использовать cp1251, а не utf8 в качестве основной кодировки проекта. (это личное мнение основанное на походе по граблям) в целом, работать с ajax и c cp1251 вполне себе можно |
Автор: evya 21.4.2009, 19:24 |
Про заголовки все понятно в скрипте! Согласен с kavkaz что сайт лучше писать на cp1251! Я ориентировочно понимаю как должно все выглядить, НО прошу Вас отредактировать тот код который у меня есть, что бы он был рабочий. Потому что я перепробывал все, и думаю опять будут проблемы. |
Автор: DEER 22.4.2009, 18:06 |
используй для AJAX jQuery он прекрасно работает с windows-1251 |
Автор: pompei 24.4.2009, 14:15 |
Вообще я так посмотрел, и пришел к выводу что у вас все скрипты уже написаны правильно - везде кодировка виндовая - и как мне кажеться преобразование кодировки в утф-8 вам ни чего не даст - всеравно будут крокозяблики(только другой формы). Так? Напишите в таком случае каким веб-сервером вы пользуетесь, у меня такое ощущение, будто веб-сервер сам конвертит кодировку. Напишите также каким редакором вы пользуетесь - редакторы тоже умеют шутить с кодировками. Короче абсолютно убедитесь что оба файла в кодировке cp1251 (сравните коды одинаковых русских букв там и там) |
Автор: evya 25.4.2009, 18:23 |
ТЕМА НЕ ЗАКРЫТЫ! Прошу вас привести реальный пример!!!!! ![]() ![]() ![]() |
Автор: kavkaz 26.4.2009, 07:28 |
Покажите пожалуйста ваш исправленный вариант скрипта, который вызывается ajax'ом при этом отдающий данные в cp1251 (если вы остановились на этой кодировке) здесь никто за вас ниче писать не будет, носом ткнуть – эт можно ![]() |
Автор: mvsgt 3.6.2009, 14:11 | ||
Ваш скрипт выдаёт
Смотрите что сервер в заголовках посылает. |
Автор: Dima85 10.6.2009, 16:50 | ||||
Расскажите пожалуйста а в чем разница между:
и
|
Автор: ginnie 10.6.2009, 17:08 |
Dima85, в верхнем варианте создается объект $query и вызываются его методы param() и remote_host(), в нижнем варианте в пространство имен скрипта из CGI.pm импортируется функция param, которая в теле скрипта вызывается. Т.е. фрагменты отличаются тем, что используются разные парадигмы: объектная и процедурная. |
Автор: Dima85 10.6.2009, 18:48 | ||||
Я не совсем в это разбираюсь, расскажите пожалуйста другими словами. Вот допустим я использую Ajax запрос а Perl заголовок выглядит так
Расскажите пожалуйста чем лучше или хуже мой способ? |
Автор: ginnie 10.6.2009, 19:00 |
Оба способа практически идентичны, отличия для Вас незначительны, поэтому выбирайте тот вариант, который Вам больше нравится. |