Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2019, 16:50   #1
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию Перекодировать переменную из GET-запроса

Всем привет!

Нужно перекодировать в pl-файле переменные из полученного GET-запроса.

Желательно сам GET-запрос, т.е. оставить в GET переменные, но уже в др кодировке.

Из utf-8 > windows-1251

Скрипт далее сам эти переменные использует.
В перл не разбираюсь.

Кто-то может подсказать?

Заранее большое спасибо!
Vodoleev вне форума Ответить с цитированием
Старый 24.01.2019, 16:59   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
use Encode;
Encode::from_to($unicodeTextHere, 'utf-8', 'windows-1251');
p51x на форуме Ответить с цитированием
Старый 24.01.2019, 17:21   #3
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию

Я эту строку знаю, спасибо. Но как это сделать с GET-запросом? Что вписывать вместо $unicodeTextHere ? И чтобы оно обратно вернулось в GET, только уже в др кодировке.
Vodoleev вне форума Ответить с цитированием
Старый 24.01.2019, 17:34   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Vodoleev Посмотреть сообщение
Но как это сделать с GET-запросом? Что вписывать вместо $unicodeTextHere ?
Например, так
Код:
use CGI;
my $q = CGI->new;
my $unicodeTextHere   = $q->param('param_name');
Цитата:
Сообщение от Vodoleev Посмотреть сообщение
И чтобы оно обратно вернулось в GET, только уже в др кодировке.
но зависит от того, что используете.
p51x на форуме Ответить с цитированием
Старый 24.01.2019, 17:35   #5
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию

php - есть такое - $_GET['parametr']

Как сделать в перл?

P.S. В param('param_name') получается, но ниже скрипт использует переменные из GET (скрипт не мой, я в перл не понимаю), потому нужно перекодировать именно сам GET

Последний раз редактировалось Vodoleev; 24.01.2019 в 17:38.
Vodoleev вне форума Ответить с цитированием
Старый 24.01.2019, 17:36   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы выше пост видели?
p51x на форуме Ответить с цитированием
Старый 24.01.2019, 18:02   #7
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию

Да, видел.

use CGI;
my $q = CGI->new;
my $unicodeTextHere = $q->param('q');

use Encode;
Encode::from_to($unicodeTextHere, 'utf-8', 'windows-1251');

В итоге перекодировали $unicodeTextHere

А мне нужно, чтобы переменная $_GET['q'] стала в кодировке windows-1251.

Как передать из $unicodeTextHere обратно в $_GET['q'] ? В этом вопрос Или это невозможно?
Vodoleev вне форума Ответить с цитированием
Старый 24.01.2019, 18:04   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
$_GET
это ваша переменная? Так вставьте ее вместо юникодестринг.
p51x на форуме Ответить с цитированием
Старый 24.01.2019, 18:06   #9
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию

Или вот кусок кода:

if (exists $ENV{'REQUEST_METHOD'}) {
if($ENV{'REQUEST_METHOD'} eq 'GET') {
$query_str=$ENV{'QUERY_STRING'};
} elsif($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query_str, $ENV{'CONTENT_LENGTH'});
}

} else {

foreach my $arg (@ARGV) {
$arg =~ m|-(.*?)=(["']?)(.*)\2|;
$query_str .= "$1=$3&";
}
chop($query_str);

}

my %query = parse_query($query_str);

Просто в лоб после

$query_str=$ENV{'QUERY_STRING'};

перекодировка

Encode::from_to($query_str, 'utf-8', 'windows-1251');

не работает. Может тут проще перекодировать?
Vodoleev вне форума Ответить с цитированием
Старый 24.01.2019, 18:08   #10
Vodoleev
 
Регистрация: 24.01.2019
Сообщений: 7
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
$_GET
это ваша переменная? Так вставьте ее вместо юникодестринг.
Это массив переменных GET в php. В перле наверное так нельзя, потому что у меня не получает в лоб перекодировать путем вставки

Encode::from_to($_GET, 'utf-8', 'windows-1251');

или

Encode::from_to($_GET['param'], 'utf-8', 'windows-1251');
Vodoleev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат post-запроса в переменную Mortimoro JavaScript, Ajax 6 21.10.2014 21:11
результат запроса записать в переменную hunter03 Помощь студентам 3 08.10.2012 20:50
Результат запроса в переменную $T@LKER C# (си шарп) 10 29.03.2011 18:17
результат запроса в переменную..Как? Iber Общие вопросы .NET 1 01.11.2009 04:18
Результат запроса sql в переменную dll32 БД в Delphi 9 26.05.2009 15:02