Home > Web And Technology > Bloglines ブログロール (Blogroll) が表示されない/文字化けする場合の対処方法

Bloglines ブログロール (Blogroll) が表示されない/文字化けする場合の対処方法

20050308_01.gif最近 Bloglines なるサービスを知り便利に使ってるのですが、自分のサイトに埋め込める Blogroll Javascript が Internet Explorer (IE) だとうまく表示されない(Javascriptエラーが出る)事に気づきました。なんだ?と調べてみたところ、

Blogrollスクリプトが出力するソースの文字エンコードは「UTF-8」なのに対して、貼り付け先のHTMLの文字エンコードが「EUC-JP」になっていた

事が原因でした。

僕んとこは EUC-JP だったので上記症状でしたが、Shift-JIS なページの場合は文字化けが起こります。Blogrollのスクリプトは UTF-8 しか対応していないようだったので、「文字コード変換CGIかますか」等と悩んだりしてたのですが、超簡単解決方法を紹介しているBLOG記事を発見。以下 Queer TOSA Diary さんの記事「BloglinesのBlogroll設置!」より引用 :

生成されたコードに「charset="utf-8"」と付け加えることであっさり解決。日本語のサイト名の文字列を数値文字参照に変換する必要も無し。とりあえずぼくの環境ではちゃんと表示できるようになりました♪

まあ素敵。まあ簡単。

<script language="javascript" type="text/javascript" 
src="http://rpc.bloglines.com/blogroll?id=bashi&target=_blank" 
charset="utf-8"></script>

<script> タグに charset 属性で文字コード指定が出来るんだ... 初めて知った。というわけで Queer TOSA Diary さん感謝です。

Safari やその他ブラウザでの解決方法 (2005/03/10追加)

エントリ書いた後早々、 joe さんから「Safariだと上記方法でも駄目でした」とコメントいただきました。こういう風に反応あると嬉しくなっちゃいます。joeさんありがとう♪
どうやら 上記対応方法はI.E.でしか有効では無いようです(I.E.独自仕様)。どんなブラウザでも正常動作させるにはやはり

blogroll Javascript の文字コードと、貼り付け先HTMLの文字コードを一致させる

しか無いかと。そこで、Bloglines の提供するブログロール機能に「任意の文字コードへの変換機能」を持たせたラッパーを用意。このCGIをかます事で Safari でも正しく表示されるようになります(動作確認OK)。

#!/usr/bin/perl
use strict;
use CGI;
use HTTP::Lite;
use Jcode;

### parameters ###
my $q    = new CGI;
my $enc  = ($q->param("encoding"))? $q->param("encoding") : "euc";
my $url  = "http://rpc.bloglines.com/blogroll?" . $::ENV{QUERY_STRING};

### get & encode ###
my $http = new HTTP::Lite;
my $req = $http->request($url);
print "Content-type: text/plain\n\n";
print Jcode->new($http->body,"utf8")->$enc;

上記ソースを bloglines_jp.cgi としてサーバに保存、ファイル権限に実行権限を追加 (chmod +x bloglines_jp.cgi) した上で、Bloglines が提供するコードの src 部分中 ? までの文字列を同CGIへのパスに置き換える&任意の文字コードをパラメータ "encoding" として指定します:

<script language="javascript" type="text/javascript" 
src="http://rpc.bloglines.com/blogroll?id=bashi&target=_blank">
</script>

太字部分を bloglines_jp.cgi へのパスに置き換える & encoding パラメータ
に任意の文字コードを指定する (euc | sjis) ↓

<script language="javascript" type="text/javascript" src="/path/to/bloglines_jp.cgi?id=bashi&target=_blank&encoding=euc" >
</script>

うまく動かなかったり、CGI設置が面倒くさい場合は僕が使ってる、iandeth. 上の bloglines_jp.cgi をそのまま呼び出しちゃってもかまいません。その場合はcgiへのパスを /path/to/bloglines_jp.cgi では無く、以下のパスに置き換えてください:

http://iandeth.dyndns.org/mt/ian/cgi/bloglines_jp.cgi

※根本解決策? : 世の流れに従って、iandeth. もUTF-8にすべきなのかなぁ...

Comments:3

joe 2005-03-09 (水) 05:11

TB頂きまして、ありがとうございます。

私も早速試したのですが、私のブラウザーではうまくいかなかったので、結局実体参照のままです。残念!
ちなみにブラウザーはSafari。
なんでだめなんだろう・・・。

joe 2005-03-26 (土) 20:16

おひさしぶりです。
ご丁寧にありがとうございます。

すごーく、魅力的ではあるんですが、やっぱりcgiまでやるのは初心者のあたしにはめんどくさいかも・・・。
ということで今回はそれでも考えてたんですが(笑)、やっぱり導入見送りますね。

でも、素晴らしいです!こんなに早くに丁寧な解説までしてくださったこと、感動しました!
これからもどうぞ宜しくお願いします(笑)。

CXQ02002 2005-04-14 (木) 12:52

ありがとうございます。昨晩から戦っていたんですが、文字コードでしたか。一発で解決。

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Web And Technology > Bloglines ブログロール (Blogroll) が表示されない/文字化けする場合の対処方法

Search
Feeds

Page Top