假设我有一个以'cp1251'编码的页面,我提交了一个表单,然后我的参数将在'cp1251'中。但是当我在Dancer中访问我的参数时,我只得到'?'标记。如何访问传递的数据?
更新
在Request.pm中似乎有一个名为_decode / bellow /的子,它在每个参数上都被调用。有没有办法告诉Dancer不要叫这个子?
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;
}
UPDATE2:
我找到了获取数据的方法。
我不得不使用request->{_http_body}->{param}
,但我不应该在它之前调用params
因为它会破坏它。
UPDATE3:
要使其正常工作,我必须从'config.yaml'中移除charset
并添加
request->{_params_are_decoded} = 1;
。
答案 0 :(得分:0)
自动编码仅在设置“charset”设置时发生。
在config.yml中禁用它,你就完成了。