假设我有一个以'cp1251'编码的页面,并且我提交了一个表格,那么我的参数将会在'cp1251'中。但是当我在Dancer中访问我的参数时,我只能得到'?'标记。我如何访问传递的数据?舞者请求params编码
更新:
好像有一个叫子_decode /波纹管/在Request.pm这就是所谓的每一个参数。有没有办法告诉舞者不要叫这个子?
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;
。
出于好奇,你为什么避免使用UTF-8? – ikegami