gpt4 book ai didi

encoding - 显示无效 UTF-8 的 Mojolicious 模板

转载 作者:行者123 更新时间:2023-12-02 17:28:06 25 4
gpt4 key购买 nike

我正在使用 Mojolicious (不是 Lite)连同 CPAN::Redis .

我正在以这种方式存储一些日语编码的数据:

use Redis;
my $redis = Redis->new;
$redis->set("mykey",$val);
# $val contains a string which was read from a file.
# The value looks like: テスト

在代码的后面,我从 redis 中读取了该值:

my $val = $redis->get("mykey");
print Dumper($val); #the value prints correctly in terminal
$self->stash(
myvalue => $val
);
$self->render(
template => "/pages/test"
);

和模板:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div><%= $myvalue %></div>
...

但它显示的值如下:ãã¹ã。

在浏览器中手动更改字符集没有任何区别(它没有按预期显示)。

为什么在终端显示正确,在模板中显示不正确?

注意事项:

  • 我使用了 base64 编码/解码并且它没有改变(我确定它不是 Redis)。
  • 我正确安装了日文字体和设置(我已经使用日文编码多年,但我第一次使用 Mojolicious 模板完成这项任务)。
  • 所有文件都以 UTF-8 格式保存(未使用其他编码)。
  • 如果我在模板(硬编码)中用日语写一些东西,它会正确显示。

最佳答案

我讨厌回答我自己的问题..但我找到了解决方案:

use Encode qw(decode_utf8);
...
$self->stash(
myvalue => decode_utf8($val)
);

就这么简单。不确定为什么它在终端上正确显示...可能是“Dumper”正在转换它?

关于encoding - 显示无效 UTF-8 的 Mojolicious 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36884618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com