我正在尝试将 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
}
);
Perl代码:
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
包含预期的数据。