Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Всем привет!

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

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

Из utf-8 > windows-1251

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

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

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

Код:
use Encode;
Encode::from_to($unicodeTextHere, 'utf-8', 'windows-1251');
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 24.01.2019, 18:21   #3
Vodoleev
Новичок
Джуниор
 
Регистрация: 24.01.2019
Сообщений: 7
Репутация: 10
По умолчанию

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

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

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

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

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

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

Вы выше пост видели?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 24.01.2019, 19:02   #7
Vodoleev
Новичок
Джуниор
 
Регистрация: 24.01.2019
Сообщений: 7
Репутация: 10
По умолчанию

Да, видел.

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, 19:04   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,684
Репутация: 2631
По умолчанию

Код:
$_GET
это ваша переменная? Так вставьте ее вместо юникодестринг.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 24.01.2019, 19:06   #9
Vodoleev
Новичок
Джуниор
 
Регистрация: 24.01.2019
Сообщений: 7
Репутация: 10
По умолчанию

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

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, 19:08   #10
Vodoleev
Новичок
Джуниор
 
Регистрация: 24.01.2019
Сообщений: 7
Репутация: 10
По умолчанию

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

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

или

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
результат 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 05:18
Результат запроса sql в переменную dll32 БД в Delphi 9 26.05.2009 15:02


09:38.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.