「cp1251」でエンコードされたページがあり、フォームを送信すると、パラメータは「cp1251」になります。しかし、Dancer で自分のパラメーターにアクセスすると、'?' マークしか表示されません。渡されたデータにアクセスするにはどうすればよいですか?
アップデート:
すべてのパラメータで呼び出される Request.pm に _decode /below/ というサブがあるようです。ダンサーにこのサブを呼び出さないように指示する方法はありますか?
sub _decode {
my ($h) = @_;
return if not defined $h;
if (!ref($h) && !utf8::is_utf8($h)) {
return decode('UTF-8', $h);
}
if (ref($h) eq 'HASH') {
while (my ($k, $v) = each(%$h)) {
$h->{$k} = _decode($v);
}
return $h;
}
if (ref($h) eq 'ARRAY') {
return [ map { _decode($_) } @$h ];
}
return $h;
}
アップデート2:
データを取得する方法を見つけました。使用する必要がありましたが、破損するため、その前にrequest->{_http_body}->{param}
呼び出すべきではありません。params
Update3:
charset
それを機能させるには、「config.yaml」からを削除して追加する必要がありました
request->{_params_are_decoded} = 1;
前のフィルターで。