PHPで取得したEXIFのユーザコメントが文字化けしてしまいます。


exif_read_dataで
EXIF,UserCommentを読み込んでいますが、
文字化けしてしまいます。
mb_convert_encodingで色々試しましたが解決できません。

できればライブラリ等を使わずにできる方法を
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2008/11/26 20:15:09
  • 終了:2008/11/26 23:31:43

ベストアンサー

id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/11/26 23:17:23

ポイント100pt

ごめんなさい。勘違いしていました。

#2の回答は無視してください。


16bit unicode little endian でエンコードされています。

これをShift_JIS で表示するためには下記のようにします。

$UserCommentに UserComment.exif の値が入っているものとします。

$bin = substr($UserComment, 8);
$str = mb_convert_encoding($bin, 'SJIS', 'UCS-2LE');
echo $str;
id:lemon-st

表示されました!

有難うございました。

2008/11/26 23:27:28

その他の回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/11/26 21:03:37

ポイント20pt

おそらく文字化けだと思うので、以下の情報をお願いします。

1.UserCommentに代入したテキスト本文

2.UserCommentのバイナリデータ

echo bin2hex(UserCommentの値)

のようにすれば、16進数で表示されます。

id:lemon-st

1.テスト

2.554e49434f444500c630b930c830

です。

2008/11/26 21:21:54
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/11/26 22:28:16

ポイント20pt

うーん、文字コードではないですね。

  1. EXIFを埋め込んだアプリケーションは何でしょう。それは日本語に対応していますか?
  2. UserCommentに、正常に「テスト」と登録されていますか。他のExifツールを使って正常に「テスト」と表示することはできますか?
id:lemon-st

1.Windowsのプロパティでコメントを入れました。

2.PhotoshopでもEXIF情報に「テスト」と表示されました。

Exif専用ツールじゃないとダメなのでしょうか。

ちなみにUserCommentの最初の8バイトは文字コードを表しているようで、

UNICODEと表示されます。mb_detect_encodingで調べるとASCIIとなります。

2008/11/26 22:44:00
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/11/26 23:17:23ここでベストアンサー

ポイント100pt

ごめんなさい。勘違いしていました。

#2の回答は無視してください。


16bit unicode little endian でエンコードされています。

これをShift_JIS で表示するためには下記のようにします。

$UserCommentに UserComment.exif の値が入っているものとします。

$bin = substr($UserComment, 8);
$str = mb_convert_encoding($bin, 'SJIS', 'UCS-2LE');
echo $str;
id:lemon-st

表示されました!

有難うございました。

2008/11/26 23:27:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません