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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с кодировками 
:(
    Опции темы
GShadrin
  Дата 23.8.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На стороне клиента передается русский текст на сервер. Используется метод get. 
Печатаю принтом это поле - получаю "Перл" вместо "Перл".
Стоит "Русский apache".
Кодировка страницы charset=windows-1251
На сервере такой код:
Код

#!/usr/bin/perl
use CGI qw(:standard);
print "Content-type: text/plain; charset=windows-1251\n\n";
$namereg=param('namereg');
print $namereg;


читал вот такое
    * Если ASCII код символа больше 32 и меньше 128, то он будет выдан без изменения.
    * если символ - пробел, то он заменится на "+" (плюсик, без кавычек) все остальное преобразуется в вид %xx, где xx -- шестнадцатеричный код символа. Если вам повезло и у вас "Русский apache", то он преобразует его в нормальную кодировку.
http://www.linux.org.ru/books/perl-faq/ru-perl-faq-4.html

Но процентиков у меня не выводит. Значит apache его преобразовал. Почему текст битый?


Если напишу: print("Перл");  напечатает "Перл"


Это сообщение отредактировал(а) GShadrin - 23.8.2009, 18:22
PM MAIL   Вверх
GoodBoy
Дата 25.8.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

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



Цитата(GShadrin @  23.8.2009,  19:20 Найти цитируемый пост)
"Перл" 

Это - Юникод... Копай в эту сторону... Данные со страницы у тебя приходят не в той кодировке...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
sir_nuf_nuf
Дата 26.8.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(GShadrin @  23.8.2009,  18:20 Найти цитируемый пост)
получаю "Перл" 


Цитата(GoodBoy @  25.8.2009,  16:17 Найти цитируемый пост)
Это - Юникод...


Неплохо.. это в школе джедаев кракозябры читать учат ?

Добавлено через 5 минут и 16 секунд
Хм.. по делу:

1) попробовать не print на страницу делать,
а print STDERR - что выведет в лог сервера ?
2) попробовать перед выводом данных на страницу конвертировать их
из utf-8 в windows-1251.
Похоже, что "русский" апач - конвертит автоматически в utf8 входные данные.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
GShadrin
  Дата 26.8.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(sir_nuf_nuf @  26.8.2009,  08:11 Найти цитируемый пост)
1) попробовать не print на страницу делать,
а print STDERR - что выведет в лог сервера ?

попробывал
В лог записалось в кодировке utf-8, хотя кодировка страницы windows-1251
Почему так происходит?
Браузер передает в формате utf-8, хотя кодировка windows-1251 или "русский" апач разбирает в utf-8?

Буду пробывать переконвертировать.
Спасибо за помощь.

Это сообщение отредактировал(а) GShadrin - 26.8.2009, 11:55
PM MAIL   Вверх
GShadrin
Дата 26.8.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



перекодировал из utf-8 в windows-1251 все работает

Это сообщение отредактировал(а) GShadrin - 26.8.2009, 12:13
PM MAIL   Вверх
sir_nuf_nuf
Дата 26.8.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(GShadrin @  26.8.2009,  11:54 Найти цитируемый пост)
Браузер передает в формате utf-8, хотя кодировка windows-1251 или "русский" апач разбирает в utf-8?

посмотрите, что передается по HTTP. Можно воспользоваться сниффером.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
aksined
Дата 28.8.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



не нужно пользоваться снифеером
русский апач сам ничего не конвертирует.

Код

В лог записалось в кодировке utf-8, хотя кодировка страницы windows-1251
Почему так происходит?
Браузер передает в формате utf-8, хотя кодировка windows-1251 или "русский" апач разбирает в utf-8?


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


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

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


 




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


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

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