javascript 変数を JSON 文字列として Mojolicious に送信しようとしていますが、perl 側でのデコードに問題があります。私のページは utf-8 エンコーディングを使用しています。
json 文字列 ( の値$self->param('routes_jsonstr')
) の値は正しいようですが、Mojo::JSON
デコードできません。utf-8 文字がない場合、コードは正常に機能しています。私は何を間違っていますか?
Javascript コード:
var routes = [ {
addr1: 'Škofja Loka', // string with utf-8 character
addr2: 'Kranj'
}];
var routes_jsonstr = JSON.stringify(routes);
$.get(url.on_route_change,
{
routes_jsonstr: routes_jsonstr
}
);
パールコード:
sub on_route_change {
my $self = shift;
my $routes=j( $self->param('routes_jsonstr') );
warn $self->param('routes_jsonstr');
warn Dumper $routes;
}
サーバー出力
Wide character in warn at /opt/mojo/routes/script/../lib/Routes/Homepage.pm line 76.
[{"addr1":"Škofja Loka","addr2":"Kranj"}] at /opt/mojo/routes/script/../lib/Routes/Homepage.pm line 76.
$VAR1 = undef;
上記の最後の行は、json 文字列のデコードが機能しなかったことを示しています。perl 側でデコードする utf-8 文字がない場合、すべて正常に動作し$routes
、期待されるデータが含まれます。