BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 文字エンコーディングとM17Nの解説

文字エンコーディングとM17Nの解説

原文(投稿日:2009/5/10)へのリンク

先日、James Edward Gray II氏は、Rubyの文字エンコーディングに関する10の投稿「M17Nを理解する」を終えた。

Ruby 1.9は、文字サポートについて多くの変更を取り入れた。しかも、異なるエンコーディングが混在する状況を扱うための強力なサポートを用意している。これは多くのプロジェクト、とりわけ世界中の人々によって開発されるオープンソース プロジェクトにおいて求められることだ。

氏はまず基礎的なことから始め、Unicodeについて、エンコードの方法、そしてRuby 1.8に関する投稿、例えば「iconvによるエンコーディングの変換」へと続き、さらにRuby 1.8におけるUnicodeの扱い、と話を進める。その後、「Ruby 1.9の文字列」という包括的な説明と、Ruby 1.9は他の多くの言語とどう異なっているのか?という話へと進む。

一般的には、Unicodeのように万能なエンコーディングを1つ選択し、すべてのデータをそのフォーマットで扱います。Ruby 1.9は別の方法を選びました。1つのエンコーディングを選択する代わりに、80以上のエンコーディングでデータを扱うことを可能にしたのです。

Ruby 1.9の多言語化で新しくなったことの1つに、3種類のデフォルト エンコーディングがある。Ruby 1.8ではたった1つのグローバル変数だった。なぜこれが必要なのか。次のシナリオを考えてみる。

私はUTF-8でコードを書いてもいいし、一方、日本人のプログラマはShift JISで書いてもいい。Rubyはそれをサポートするべきで、実際、1.9はそうしている。もう少し詳しく説明しよう。私が書いたUTF-8のコードをgemパッケージにして、後日、日本人のプログラマが書いたShift JISのコードで、それを利用するところを想像して欲しい。どうしたら円滑に作業を進めることができるだろうか?

Ruby 1.9の3種類のデフォルト エンコーディング」を読むといいだろう。最後の記事では様々な話題、例えばバイナリデータの扱いや正規表現のエンコーディング、を紹介している。

しばらくは1.8を使い続けるつもりだとしても、10の投稿をすべて読み通せば、Ruby 1.9の強力無比な多言語化への準備となり、また数々のコツを知ることができるだろう。それから、もしUnicodeの知識が不十分だとしたら、Joel Spolsky氏の伝説的な「すべてのソフトウェア開発者が絶対確実に知っていなければならないUnicodeとキャラクタセットに関する最低限のこと(言い訳なし!)」を(まだ読んでいなければ)読むといいだろう。

この記事に星をつける

おすすめ度
スタイル

BT