Ruby 2.0 から始まるJIS X 0213の世界

| コメント(0) | トラックバック(0)

Ruby 2.0では、対応する文字コードにEUC-JIS-2004が追加されています。"EUC-JP-2004" という名前で入っています (真ん中が "-JP-" になっているので注意)。

これは大変良いことです。Ruby 1.9では文字コードの扱いが大きく変わって興味深かったのですが、肝心のJIS X 0213の符号化方式に対応していないので私の役には立ちませんでした。

Ruby 1.9以降では、Javaなど他の言語でよくある内部コードとしてUnicodeを使う方法でなく、文字列に符号化方式の情報をつけて直接に元のコードの文字列を処理できる方法がとられています。

この方式はJIS X 0213を使う上でこそメリットがあります。サロゲートや結合文字や互換漢字といったUnicodeの面倒な部分を無視することができるからです。(細かいことをいう人のための注釈: 厳密にはJIS X 0213にも結合文字がありますが、日本語のためにJIS X 0213を使っていて必要になることはまずないでしょう)

Ruby 2.0でEUC-JIS-2004が実装されたのは大変意義深いことで、ぜひ試してみたいと思います。EUCが使えるということは、JIS X 0213で定義されているコード(ビット組合せ)が直に操作対象となるということですから、Unicodeに変換した上で処理するのと違って、まさにJIS X 0213の世界そのものということになります。

Unicodeとの変換も実装されているので、iconvのような他のライブラリを使わずに(というか使えなくなった) 必要に応じてUTF-8などと変換ができます。

他の言語と比較するとこんな感じになります。

EUC-JIS-2004Shift_JIS-2004
Ruby 2.0×
Java 7×
Python

ちなみにRuby 1.8でもEUC-JIS-2004のテキストデータをEUC-JPと同じように処理できたのですが、このときはStringクラスが文字単位でなくバイト単位で処理するようになっていました(EUCに限らず、Ruby 1.8までの多バイトコードの扱い全般の特徴)。2.0ではきちんと文字単位になります。

トラックバック(0)

トラックバックURL: http://yanok.net/yanok/mt-tb.cgi/476

コメントする

最近のブログ記事

National Geographic Your Shot で Daily Dozen に選ばれた話
ブログをさぼっている間に時間がずいぶん経…
情報処理学会から山下記念研究賞を頂いた話
ブログをさぼっている間に時間がずいぶん経…
Go と Rustの文字列
Go言語における文字列はUTF-8のバイ…
『[改訂新版] プログラマのための文字コード技術入門』のページ作成
発売されてから半年以上経ってようやくのこ…
『[改訂新版]プログラマのための文字コード技術入門』発売!
ばたばたしていて当サイトの更新も怠ってい…

広告