Imagerを使ってフォームから送られてきたテキストを、画像化しようとしていますが、日本語が文字化けしてしまいます。
$textが普通に「$text="ああああ";」だと、うまくできます。
ファイルは、UTF-8です。(添付画像はそこに入れてみたものです。理想)
□□□↓↓ファイル↓↓□□□
#! /usr/bin/perl
#インポート
use strict;
use warnings;
use utf8;
use Imager;
$text="ああああ";#←ここを「my ($cmd,$text) = split(/;/,$ENV{'QUERY_STRING'});」にすると、エラー
#↑ここをCGI.pmを使ってみたら、文字化け!
my $font = Imager::Font->new(
file => '/home/*****/public_html/font/○△□.ttf',
color => '#000000',
size => 60,
);
my $bbox = $font->bounding_box(string => $text); # 文字情報を取得
my $img = Imager->new(xsize => $bbox->total_width, ysize => $bbox->font_height);
$img->box(color => '#ffffff', filled => 1); # 背景を白くする
$img->string(
font => $font,
text => $text,
x => 0,
y => $bbox->font_height + $bbox->descent,
aa => 1,
);
print "Content-type: image/png\n\n";
print $img->write(fh => \*STDOUT, type => 'png') or die $img->errstr;
□□□↓↓ここまで↓↓□□□
どうか、文字化けしないようテキストを、GETメソッドで受け取れるように改変していただけませんか?
>my ($cmd,$text) = split(/;/,$ENV{'QUERY_STRING'});
テキストボックスが1つだけのフォームでも、
QUERY_STRINGには複数のキー/バリューのペアが入っていたりします。
百聞は一見にしかず…なので、下記のようにして中身を確認してみてください。
print $ENV{'QUERY_STRING'};
>CGI.pmを使ってみたら、文字化け!
キャラクタセット指定忘れ?
my $c = new CGI; $c->charset('utf-8');