Я использую Mojolicious (не Lite) вместе с CPAN::Redis.Mojolicious шаблон отображения недействительный UTF-8
Я храню некоторые данные, которые японский закодированный таким образом:
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 templates для этой задачи).
- Все файлы сохраняются в UTF-8 (никакой другой кодировки не используется).
- Если я пишу что-то по-японски внутри шаблона (жестко закодированное), оно отображается правильно.