ティアのホームページ☆ミ:ID 141:タイトル perlの使い心地 oC
no prev page 1/1ページ(1件) no next page
To Close..perlの使い心地 2008年02月15日23時18分
ティアのたわごと☆其の505

実は504から、rssを自動で出力していたりします。
xml形式での出力は、ここBiglobeの場合、拡張子をxmlにしなければtext/xmlで出力してくれないため 個人的にはindex.rdfとかのファイル名がいいのですが、あきらめてindex.xmlにしています。

要するに、フィードの出力には成功していると言うことです。


では、これから対応しようとしている人たちのために、簡単な説明をいたしましょう。

実はperlは5.8以降UTF8で動いているらしいです。

use Encode;?を入れないとだめだという話もどこかにありましたが
まぁ細かいところは無かったことにしてw


で、そんな感じなので、perlで普通に文字を作成して、普通に出力すると、なんとUTF8になるわけです。

でも、「そのまま日本語出力するとUFT-8じゃないよ?」という人もいますがそれは大きな間違いです。

perlのソースは、以前使ったのをそのまま流用している人なんかは、EUCやShift-Jisで書かれていますよね?

perl自身は、データの内部表現をurf-8だと信じています。

ですから、EUCコードでソースファイルが書かれていたとしても、ソース中に宣言されたデータはutf-8だと信じているんです。

でも、ソースファイルはEUCで書かれていますから、データはEUCコードで定義されます。


これが、大きな落とし穴なんです。
ちなみに、あたしはこの穴には落ちませんでした(笑

同様にCGIに送られてくる漢字コードは主にブラウザを表示している文字コードで送られてきます。

htmlをShift-Jisで書いてればSHIFT-JISで、EUCで書いてればEUCで、

古いCGIはこれをすべてEUCに変換していると思いますが、このバイト単位でのデータ変換はperlは一切関与していません。

その最中もperlは、utf-8だと信じています(笑


ですから、これをutf-8として処理するためには、

decodeを利用する必要があります

このデコードを使ったときにだけ、perlは、

「あ?uitf-8じゃなかったんだ?ごめんごめん」

とやっと対応してくれます。


$out_str = decode($in_str,"euc-jp");

などとすると、euc-jpからUTF-8へ変換してくれます。

xmlでデータ出力するときは、
細かい書式設定がありますが、

それをのぞけば、後は、

print を実行すれば、utf-8のファイルができるわけです。

ここのホームページはデータはすべてEUCで保持しているため受信したデータはすべてEUCに変換してDBへ登録し、XML出力するときだけ、上記decodeを使っています。

っていうかですね、

jcode.pl無くても何とかなるらしいんですよね・・・・

まぁ全体を変えるの面倒ですから、今までのところは一切変更していないんですよ

そんな感じでこれからも更新していきますわ
閉じる
テーマ:たわごと URL:https://tsukiyori.sakura.ne.jp/index_m.cgi?ID=141
 
no prev page 1/1ページ(1件) no next page