0
Mojolicious(ライトではない)とCPAN::Redisを一緒に使用しています。無効な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テンプレートを使用しています)。
- すべてのファイルはUTF-8で保存されます(他のエンコーディングは使用されていません)。
- テンプレート内に日本語で何かを書く(ハードコード)と正しく表示されます。