« 久しぶりの通勤 | メイン | 限界3とナイトAF3(こうさぎ) »

UNICODEにまつわるいろいろ

ひや~んの日記から

私のmixiの日記欄からアクセスすると、我が「ポルスタ」のトップページへ行ってしまう問題。 日記のRDFにある「~」という文字が、mixiの方で何故か「?」に置換されてしまっているのが原因です。

えーと、どうしてこうなるのか。ですが、どこかでUNICODEに変換されているのが原因です。

ひや~んのRDFでは、encoding="Shift_JIS"と指定されています。これを手元に保存し、たとえば、以下のようなperlのプログラムで処理しようと思います。

use XML::RSS;
my $rss = new XML::RSS;
$rss->parsefile("index.rdf");
# print the title and link of each RSS item
foreach my $item (@{$rss->{'items'}}) {
  print "title: $item->{'title'}\n";
  print "link: $item->{'link'}\n\n";
}

このとき、perlでは、Shift_JISというencodeは利用出来ないので、XML::Parser モジュールをインストールするともれなくついているJapanese_Encodings.msgを読んで、index.rdfのencodeingを変えてやる必要があります。

たとえば、encoding="x-sjis-unicode"と設定した時と、encoding="x-sjis-cp932"と指定した時では、違う結果が出てきます。それこそ、今回問題になっている、チルダのところだと思います

さて、どうして、こういうことが起きるのか。ですが、それこそ、Japanese_Encodings.msgに書いてあったりします。ところが、英語なので読むのが面倒です。河合さんの訳が、河合さんのPerl XMLでencoding='Shift_JIS'や'euc-jp'を使うのページで配布されています。

このあたり、従来の文字コードとUnicodeの対応に関する諸問題にまとめられているのですが、ようするに、半角円記号と半角バックスラッシュの問題が大きくなって帰ってきているわけで、これを技術的に解決するのは容易ではないでしょうね。

さて、回避策ですが

  1. ~%7Eと表記する
  2. Shift_JISではなくUTF-8で記述する

の2通りあるように思います。

こういうのってあっちこっちで問題になるように思うんだけど、どうやって解決してるんだろうなぁ。おしえて!>えらいひと。

Amazon広告

トラックバック

このエントリーのトラックバックURL:
http://fulufuru.hauN.org/cms/mt-tb.cgi/247

この一覧は、次のエントリーを参照しています: UNICODEにまつわるいろいろ:

» mixiで〓のつづき 送信元 暇な時間に書く雑記
ふるふるさんに助言いただいたので、Movable Typeをいろいろといじくってみました。 とりあえず、全部UTF-8に統一しようと思ったら、データがShift_JISで保存されていてがっくし。 しかたなく、データを全てエクスポートしてUTF-8に変換し、Movable Typeを一から入れなお... [詳しくはこちら]

コメントを投稿

About

2004年10月14日 21:44に投稿されたエントリーのページです。

ひとつ前の投稿は「久しぶりの通勤」です。

次の投稿は「限界3とナイトAF3(こうさぎ)」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type