アプリ版:「スタンプのみでお礼する」機能のリリースについて

XML::RSSでRSSファイルを自動生成後のファイルが文字化けします。

webサーバーのキャラセットはコメントアウトしています。
キャラセットをAddDefaultCharset UTF-8にしても文字化けします。

スクリプトは下記でテストしています。
文字コードですが、UTF-8Nであれば、ファイルが生成されます。
生成されたファイルは文字化けしています。
ご教授お願いいたします。

#!/usr/bin/perl

use XML::RSS;
use strict;

my $rss = new XML::RSS(version => "1.0");

my $rssdata = [
{
title => "RSSテストその1",
link => "http://www.*******.***/rsstest",
description => "RSSテストその1です。",
dc => {
subject => "rsstest",
creator => "rsstest",
date => "2007-06-12T00:00:01+09:00",
}
},
];

$rss->channel(
title => "*******.***",
link => "http://www.*******.***",
description => "RSSテスト",
dc => {
creator => "rsstest",
date => "2007-06-12T00:00:00+09:00",
subject => "RSSのテストです",
},
);


foreach(@{$rssdata}){

$rss->add_item(
title => $_->{title},
link => $_->{link},
description => $_->{description},
dc => {
subject => $_->{dc}->{subject},
creator => $_->{dc}->{creator},
date => $_->{dc}->{date}
}
);
}

$rss->save("rss.xml");

A 回答 (1件)

> 文字コードですが、UTF-8Nであれば、ファイルが生成されます。



UTF-8Nに変換している部分や指定してる部分がこのコードにはないみたいです。


ここからは勘ですが、XML::RSS には文字コードを自動でなんとかする機能はついてないはずなので、自分で制御をする必要があります。

1. XML::RSSに渡す文字コードに気を遣う
  (このソースの例だと、perlのソースの文字コードがそれになりますね)
2. XML::RSSのコンストラクタに、encodingオプションを渡す
  (生成されるRSSの<?xml version='1.0' encoding='XXXXX'?> に埋め込まれます)
    • good
    • 0
この回答へのお礼

use encoding "ecu-jp", STDOUT => "UTF-8";

上記を書き加えて、euc文字コード保存で解決しました。

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

お礼日時:2007/06/13 21:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!