250行はmod_rewrite仕様に変えておく。
my $url = $HNS::System::MyDiaryURI."?$year$month$abc#$year$month$day$mark";を適切に変えておく。下記diff参照。
さて。
XML/Parser.pm line 187というエラーが出ているということは、XML宣言のエンコード設定がおかしいからではないか? という検索結果がチラホラ。
rss.cgiをUTF-8にしてみた:
--- RSS.pm 2004/02/20 16:19:29 1.1
+++ RSS.pm 2004/02/20 19:00:14
@@ -16,6 +16,7 @@
use strict vars;
use HNS::Tools::Title;
+use Jcode;
use vars qw(@ISA);
@ISA = qw(HNS::Tools::Title);
@@ -26,7 +27,7 @@
sub xml_header($) {
my $self = shift;
- print "<?xml version=\"1.0\" encoding=\"euc-jp\" ?>\n";
+ print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print "<rdf:RDF\n";
print " xmlns=\"http://purl.org/rss/1.0/\"\n";
print " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
@@ -246,11 +247,11 @@
$content = $item{"content"};
$high = $item{"high"};
- my $url = $HNS::System::MyDiaryURI."?$year$month$abc#$year$month$day$mark";
+ my $url = $HNS::System::MyDiaryURI."$year/$month/$day.html#$year$month$day$mark";
my $rssitem;
$rssitem->{url} = $url;
- $rssitem->{title} = $content;
- $rssitem->{description} = $para;
+ $rssitem->{title} = jcode($content)->utf8;
+ $rssitem->{description} = jcode($para)->utf8;
$rssitem->{created} = "$year-$month-$day";
if ($grp eq '') {push(@rssitems, $rssitem);}
hns付属のCodeConv.pmとは無関係にJcodeを使う感じになったけど。本当だったらCodeConv.pmをnkf --utf8とかJcodeをutf8で呼べるような拡張をしてもいいのかもしれない。
あと日記の名前が日本語の人はもっとコンバートを追加する必要があるな。



[ コメントする ]