人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PerlのImagerでテキストの画像を作りたい!
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メソッドで受け取れるように改変していただけませんか?

1363694152
●拡大する

●質問者: Kamesuta
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど

>my ($cmd,$text) = split(/;/,$ENV{'QUERY_STRING'});

テキストボックスが1つだけのフォームでも、
QUERY_STRINGには複数のキー/バリューのペアが入っていたりします。
百聞は一見にしかず…なので、下記のようにして中身を確認してみてください。

print $ENV{'QUERY_STRING'};

>CGI.pmを使ってみたら、文字化け!

キャラクタセット指定忘れ?

my $c = new CGI;
$c->charset('utf-8');

a-kuma3さんのコメント
後は、この CGI を IMG タグで指定しているページが UTF-8 以外で書かれているとか、ですかね。

うぃんどさんのコメント
>後は、 さらに、考えられるのは…。 WEBサーバーの返すヘッダー情報や、 HTMLに記述されているMETAタグが正しくない? インターネットオプション→詳細設定 「UTF-8のURLを送信する」のチェックが入ってしまってる? (デフォルトONですが…。) utf-8にするように書いておいたのだけど…無視されてますかね(苦笑)

うぃんどさんのコメント
http://q.hatena.ne.jp/1364018504 で回答リクエストを受け取ったが、 複数の質問を並行して見るのは面倒なので、こちらでコメントを続ける。 何も返信することなく放置するのは礼儀に反する行為であり、 私はすでに腹立たしく思っているので、 あまり親切に答える気は無いと告げておく。 マルチ投稿はそもそも儀礼に反するが、 どうしてもということで行ったならば、 せめてもの礼儀として、一方にだけコメントを行うのではなく、 両方並行して行うべきである。 さて、 回答者の責務として出来る範囲では答えていこうと思うが、 現状で気になっている点は今のところ1つだけ。 「font001.TTF は日本語に対応したフォントか?」 余談になるけども、 font001.TTF は Microsoftが配布していたものだと思われるが、どうだろう? 仮にそうだとすれば、公の場で使って良いという書類を見たことはないので、 用途を自宅内や社内での実験用などと割り切っている場合を除けば、 ライセンス違反になるかもしれない。注意したいところだ。

Kamesutaさんのコメント
font001.TTF は、実験用で「MSゴシック」です。本当は、自作フォントを使う予定ですが、ひらがな、カタカナ、数字 しか使えないし、わかりずらいので、使っています。 日本語に対応しています。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ