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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка генерируемого Perl'om HTML-файла, - 
:(
    Опции темы
deymos34
Дата 23.9.2005, 00:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте!
Есть англоязычный скрипт аукциона на Перле. Перевел я его на русский, и все бы ничего, но возникли проблемы с кодировкой - как в русских описаниях лотов, так и в рассылаемых им письмах. Пришлось совершенствовать шапку генерируемого ХТМЛ-файла - добавить строку <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">. Не помогло (проверил, строка действительно добавляется в код, все ОК)! Проверял и в Эксплорере, и в Файерфоксе (автоопределение включено). Если же насильно переключить браузер на windows-1251, все отображается корректно.

Что посоветуете?

ЗЫ
А вот почту удалось отладить, но туда переменная charset была изначально включена, так что просто поменял в ней кодировку.

ЗЗЫ
Есть у меня скрипт другого аукциона, тоже на Перл, тоже самолично руссифицированный - так там проблем никаких нет, русский текст отображается корректно. При том, что в генерируемом им ХТМЛ-файле charset как не было, так и нет...

Заранее спасибо!
  Вверх
korob2001
Дата 23.9.2005, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Кодировку меняй в заголовках, а не на прямую вставляя тег <META>. Скорее всего они выводятся с помощью модуля CGI, т.е. ищи в скриптах заголовки header() и укажи нужную тебе кодировку header( -charset => "Windows-1251" ).
Если не поможет, тогда выкладывай код.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
deymos34
Дата 23.9.2005, 17:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











К сожалению, не помогло.
заголовки header импортируются из header.txt
вставил в него соответствующий код - он появился в генерируемых HTML-страницах (правда, вне тега <HEAD>), но это не помогло.

Сам ПЕРЛ-код можно увидеть здесь:
http://reninfa.ru/auct.pl

Рабочий скрипт находится здесь:

http://reninfa.ru/cgi-bin/auct.pl

(соответственно можно увидеть генерируемый ПЕРЛ-скриптом ХТМЛ-код).
  Вверх
Usya
Дата 24.9.2005, 05:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я с этим не сталкивался, но в качестве пищи для размышления... Может прокатит smile

Цитата
Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер?

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

AddDefaultCharset windows-1251

http://www.wmaster.ru/htaccess/index.htm

--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
deymos34
Дата 25.9.2005, 00:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











К сожалению, и это не помогло...
Более того, я даже в httpd.conf добавил строку AddDefaultCharset WINDOWS-1251

Эффект нулевой...
  Вверх
sharq
Дата 25.9.2005, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


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

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



deymos34

Просто замени все строки
Content-type: text/html
на
Content-Type: text/html; charset=windows-1251.

И все! smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
deymos34
Дата 25.9.2005, 20:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Увы, и это не помогло... smile
  Вверх
Usya
Дата 25.9.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1) А ты не пробовал спрашивать у админа?
2) Есть одно предложение - не фонтан, но если других советов не будет, то может подойти на первое время.
Посмотри в html-коде, как у тебя записаны слова Авто, Бизнес и Видео, аудио.
Сделай также, через хэш - автоматом перекодируй все буквы русского языка smile
Правда это немного через задницу smile

--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
sharq
Дата 25.9.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


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

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



Все просто: найди функцию print_header
Код

sub print_header {
   print $q->header;
   ...
}

Замени header на header(-charset => 'windows-1251')

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
deymos34
Дата 26.9.2005, 00:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Урааа!!!
Запахало - с помощью последнего совета. Всем спасибо.

А я, конечно, дурак - это еще в первом совете предлагалось, но реализовал я тогда криво smile

  Вверх
deymos34
Дата 27.9.2005, 00:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Рано радовался...
Возникла еще одна проблема - скрипт не переваривает в вводимых пользователем данных кавычки (срезает всю инфу после них).
Дописал скрипт, чтобы он не принимал данные (выводя соответствующее сообщение), пока юзер не удалит все кавычки. А как сделать так, чтобы скрипт сам удалял кавычки?
  Вверх
Usya
Дата 27.9.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Один из вариантов - через JavaScript, если с этим более менее знаком. При этом можно контролировать введенную инфу как при потере фокуса в нужном поле, так и при нажатии Submit.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
sharq
Дата 27.9.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


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

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



deymos34 используя регулярные выражения:
Код

my $text = s/"|'//g; # удаляет все двойные или одинарные кавычки в переменной $text



Usya это не надежно. smile

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Usya
Дата 28.9.2005, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Usya это не надежно.


sharq, когда это не срабатывает?

Кроме того, в любом случае от того что по мере заполнения формы (либо при отправке) юзеру будут выводиться сообщения о том, что в таких-то полях инфа будет немного модифицирована (либо некорректно введена) - не помешает.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
sharq
Дата 28.9.2005, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


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

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



Usya все очень просто: клиент отключает javascript или меняет его и данные в "кривом" виде отправляются на сервер, поэтому чтобу не произошло казусов при записи данных, лучше их проверять на сервере и записовать исправленными или отсылать ответ об ошибке.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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