'cp1251'로 인코딩 된 페이지가 있고 폼을 제출하면 내 매개 변수는 'cp1251'이됩니다. 그러나 댄서의 매개 변수에 액세스 할 때 나는 '?'표시 만 얻습니다. 전달 된 데이터에 어떻게 액세스합니까?댄서 요청 매개 변수 인코딩
는업데이트 :
하위있는 것으로 보인다라는 _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;
}
갱신 2는 :
나는 데이터를 얻을 수있는 방법을 발견했다. request->{_http_body}->{param}
을 사용해야했지만 손상 될 수 있으므로 params
앞에 전화해서는 안됩니다.
갱신 3 :
는 내가 'config.yaml'에서 charset
을 제거하고 필터 전에에서
request->{_params_are_decoded} = 1;
를 추가했다 작동하게하려면.
호기심 때문에, 어떤 이유로 UTF-8을 피하고 있습니까? – ikegami