PageID:Japanese in Perl
Last update:00.xx.xx

Perlで日本語を扱う際の留意点(工事中)

はじめに
Perl5.005までは、Perlは日本語文字コード等の複数バイト文字コードに対応していなかったため、日本語1文字を2文字として認識する ようになっていました。そのため、length、substr等の関数や正規表現では期待する効果が得られませんでした。そこで、有志により日本 語文字を1文字として処理するようにしたパッチが開発され、そのパッチコードをあてて日本語に対応できるようにしたPerlをJPerlと呼ぶよう になり、Perlの日本国内における普及に大きく貢献しました。また、jcode.plは文字コードの変換等に大いに利用されてきました。

Perl5.6では、新しい文字コード体系の一つであるutf-8符号化方式に対応することになったため、日本語文字も1文字として認識されるようになりました。 しかし、utf-8の実装はPerl5.6.0では「実験的」というレベルにあり、まだ完全対応というわけではありません。それでも、スクリプトの編集や(CGIにおけるブラウザへの)出力等をすべてutf-8で行うことができる環境の人にとっては、その恩恵は大きいといえるでしょう。

一方、従来の文字コード(Shift-JISやEUC等)で書かれているスクリプトの資産は大量にあります。それらを読み書きする際等に透過的にShift-JIS/EUC等 ⇔ utf-8のコード変換を行うことができればよいのですが、Perl自体にはその変換機能はまだ実装されていません。そのため、従来の文字コードを使用したデータを処理する場合は、結局従来と同様にJcode.pm等を使ってスクリプト側でコード変換を行わなざるをえない状況が続いてます。

# 2000/4現在、Jcode.pmのWindows版(Mac版)は処理に時間がかかり、MS-Windows(Mac)での使用にはやや難を感じます。

さて、上記のようにPerl5.6からはutf-8が採用されましたが、 HTMLのヘッダやEメールのヘッダ、CGIのドキュメントなどでは、Shift-JIS、EUC-JP、ISO-2022-JPをよく目にします。この他にも、Unicode、ucs-2なども雑誌等で見かけます。ここでは、これらの文字コードといわれるものについて簡単に解説するとともに、Perlにおいて、どのように取り扱えばよいのかまとめてみます。

文字コード関連の参考サイト

 文字コードの話
http://hp.vector.co.jp/authors/VA001240/article/charcode.html

 日本語漢字コードの変換
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html
 
 漢字コードとコーディング方法
http://www.d2.dion.ne.jp/~imady/kcode/kcode.html
 
新JIS漢字規格の原案資料
http://jcs.aa.tufs.ac.jp/jcs/
 
 いっちょかみ@文字コード
http://member.nifty.ne.jp/PaleG/k_char1.htm
 
 小形克宏の「文字の海、ビットの舟」 ―― 文字コードが私たちに問いかけるもの
http://www.watch.impress.co.jp/internet/www/column/ogata/
 
 文字コード問題を考える
http://www.horagai.com/www/moji/moji000.htm
 
 日本語フォントや文字コードについて
http://www.ryukyu.ad.jp/~shin/jdoc/
 
 日本語文書文字セットの指定方法
http://hp.vector.co.jp/authors/VA014833/charset.html
 
 ●文字コードとは何なのでしょうか。 


変換モジュール/ツール  


ご意見、ご要望は、 電子メールでお願い致します。
ホームページへ戻る。