※例えばapiから受け取った「シーツ」という文字列は文字化けしませんが「示す」という文字列は文字化けしてしまいます。
実行している状況は下記のような感じです。
・perlプログラムはutf-8で書いています。(use utf-8なし)
・apiから受け取るデータはutf-8フラグ付きのデータ(DumpでSTDERRに出して中身を見てみるとその時点では文字化けしていないことを確認しています)
・テンプレートファイルはutf-8のフラグなし
・HTMLとして画面に表示する際にもutf-8
この状況で受け取ったapiからのデータをencode('utf-8',$api)といった感じでフラグを外してテンプレートに渡してそのままoutputしています。
上記を基本に、色々試したのですが、文字化けをどうしても回避することができません。何か問題点や気になることなどありましたらご指摘いただけますでしょうか。
よろしくお願いいたします
原因はご自分でも書かれている通り、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のバージョンとか、これまでに試したことが分からないので、重複していたら、すみません。
何かの参考になれば。
ご回答ありがとうございます。
ただ、試したつもりではいるんですよね。。。
ご提示いただいたURLを参考にもう一度試してみたいと思います。
ありがおとうございます