perlでとあるapiからutf-8のデータを受け取って、HTL::Template::Proで出力するプログラムを書いていますが、受け取ったデータの一部日本語部分だけ文字化けをしてしまいます。テンプレート内に記載した日本語はまったく文字化けしません。

※例えばapiから受け取った「シーツ」という文字列は文字化けしませんが「示す」という文字列は文字化けしてしまいます。

実行している状況は下記のような感じです。
・perlプログラムはutf-8で書いています。(use utf-8なし)
・apiから受け取るデータはutf-8フラグ付きのデータ(DumpでSTDERRに出して中身を見てみるとその時点では文字化けしていないことを確認しています)
・テンプレートファイルはutf-8のフラグなし
・HTMLとして画面に表示する際にもutf-8
この状況で受け取ったapiからのデータをencode('utf-8',$api)といった感じでフラグを外してテンプレートに渡してそのままoutputしています。

上記を基本に、色々試したのですが、文字化けをどうしても回避することができません。何か問題点や気になることなどありましたらご指摘いただけますでしょうか。
よろしくお願いいたします

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/12/14 07:01:38
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:tdoi No.1

回答回数174ベストアンサー獲得回数75

ポイント60pt

原因はご自分でも書かれている通り、BOMのある部分と、ない部分が混在しているためと思われます。

参考:http://pub.ne.jp/wakapon/?entry_id=537384

ですので、API経由で取得したデータのBOMを削除してあげればよいかなと思います。

具体的には、

以下のブログでBOMの除去について書いているので、やってみてはいかがでしょうか?

http://hardsoft.at.webry.info/200802/article_2.html

http://hardsoft.at.webry.info/200606/article_2.html

Perlのバージョンとか、これまでに試したことが分からないので、重複していたら、すみません。

何かの参考になれば。

id:n_maco2

ご回答ありがとうございます。

ただ、試したつもりではいるんですよね。。。

ご提示いただいたURLを参考にもう一度試してみたいと思います。

ありがおとうございます

2008/12/09 23:03:26

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

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

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

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

回答リクエストを送信したユーザーはいません