假設我有一個以'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