Форум сетевых администраторов
Показаны 8 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Установка и настройка (http://netadmin.ws/forum/forumdisplay.php?forumid=28)
-- Поможите, Люды Добри!!! (http://netadmin.ws/forum/showthread.php?threadid=3428)


Помещено Kanarsky 07-10-2002 в 12:39:

Question Поможите, Люды Добри!!!

Есть скрипт каталога, если указываешь название раздела на англицком, то ссылка выводиться нормально, ежели написать на русском, то получается, например название раздела "Сервисы" выводиться как ",192,226,242,238,241,229,240,226,232,241,251" ...
Чего это за хрень такая? И как с ней бороться?

__________________
Садись в ногах! Правды нет!


Помещено MarKer 07-10-2002 в 13:07:

Пропиши кодировку windows-1251.
Например, в скриптах пишешь:
require "header.txt";
А в самом header.txt
Вставляешь:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">


Помещено Kanarsky 07-10-2002 в 15:06:

MarKer
Перелопатил все скрипты, вставил во все хидеры кодировку, без толку, всё также...
Что ещё можно сделать?

__________________
Садись в ногах! Правды нет!


Помещено MarKer 07-10-2002 в 15:46:

Я, если честно, фигово разбираюсь в PHP
Попробуй как в vBulletin:
header("Content-type: text/html; charset=windows-1251");


Помещено Kanarsky 07-10-2002 в 16:13:

Скрипты на перле, пофиг как вставлять, я уже как только не пробовал извращаться с хидерами, нифига не помогает...
Видать проблема в другом, а вот в чём?

Каждую русскую букву скрипт заменяет на 3 цифры, ПОЧЕМУ?

__________________
Садись в ногах! Правды нет!


Помещено Afina 07-10-2002 в 18:02:

покажи скрипт, откуда скачать, посмотреть


Помещено Kanarsky 07-10-2002 в 18:26:

Afina
http://focalmedia.net/tbdownload.html - 360 кб...

__________________
Садись в ногах! Правды нет!


Помещено Afina 07-10-2002 в 18:52:

имхо проблемма в том что скрипт некоректно разбирает $ENV{'QUERY_STRING'}, причем там не один скрипт, а много и о русских буковках он и не вкурсе.
например

code:

//cgi/tseek.cgi
sub get_env
{
if ($ENV{'QUERY_STRING'} ne "") {
								$temp = $ENV{'QUERY_STRING'};
								}
								else
								{
								read(STDIN, $temp, $ENV{'CONTENT_LENGTH'});
								}

@pairs=split(/&/,$temp);

foreach $item(@pairs) {
	($key,$content)=split (/=/,$item,2);
	$content=~tr/+/ /;
	$content=~ s/%(..)/pack("c",hex($1))/ge;
	$fields{$key}=$content;
}

$fields{'comment'}=~s/cM//g;
$fields{'comment'}=~s/nn/<p>/g;
$fields{'comment'}=~s/n/<br>/g;
}


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

code:
	$content=~tr/+/ /;
	$content=~ s/%(..)/pack("c",hex($1))/ge;


на вот такой кусок

code:
  $key =~ tr/+/ /;
  $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $content =~ tr/+/ /;
  $content =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $content =~ s/<!--(.|n)*-->//g;
  $key =~ tr{xE0-xFF}{xC0-xDF};
  $key =~ tr{a-z}{A-Z};




Afina добавил 07-10-2002 в 19:01:50:
фу нафик, прогнал =(
сорри
см функции encode_dir и decode_dir
они виноваты в твоей проблеме
это они преобразовывают все символы не равные [0-9a-zA-Z] в их числовой код
encode_dir - меняет "Сервисы" на ",192,226,242,238,241,229,240,226,232,241,251"
а decode_dir должна производить обратную операцию
может она при выводе не вызывается?


Формат времени GMT. Текущее время 04:17.
Показаны 8 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.