tiff画像からメタ情報(IPTC)を取得し、それを表示するプログラムをExifToolを使用して書いています。
perl
1#! /usr/bin/perl 2use strict; 3use warnings; 4use Image::ExifTool; 5my $file = $ARGV[0]; 6##########外部ファイルが入ってきていない時エラー出す########## 7if ( !$ARGV[0] ){ 8 print "Input File Name!!\n"; 9 exit (0); 10} 11############################################################## 12 13##########exiftoolを使ってtiffファイルからキャプション情報を取り出す########## 14my $exifTool = new Image::ExifTool; 15my $info = $exifTool->ImageInfo($file); 16my $caption = $$info{'Caption-Abstract'}; 17######################################################################## 18print "$caption\n";
これを実行すると文字化けしたキャプションが表示されます。
環境はCentOS7、文字コードはUTF-8です。
自分なりに調べて以下の内容を試行錯誤してみたのですが、結果は変わりませんでした。
・CharsetオプションでLatin指定
$exifTool -> Options(Charset => 'Latin');
・CharsetIPTCオプションでUTF-8指定
$exifTool -> Options(CharsetIPTC => 'UTF8');
・Encodeモジュールを使ってのエンコード→デコード
そこでこの文字化けを解消する方法を知っている方がいらっしゃいましたら是非教えていただきたいです。よろしくお願いします。
本来表示されるべき文字列とその文字化けの様相を示すことは可能ですか?
最後のprintの直前に
binmode STDOUT, ':utf8';
と挿入するとどうなりますか?
返信ありがとうございます。
キャプションに「キャプション_caption」と入力してプログラムを実行すると「・ュ・罕ラ・キ・逾caption」と出力されます。また、コマンド上で
exiftool test.tiff
を実行するとキャプションは「.%-%c%W%7%g%s._caption」と出力されます。
そして「binmode STDOUT, ':utf8';」行をprintの直前に挿入しても出力結果に変化はありませんでした。
を
回答1件
あなたの回答
tips
プレビュー