文字コードについて

弊社が今取り組んでいる「文字コード」とは一体何か、を簡単に説明します。

文字コードの考え方


文字コード、誰でも一度は聞いたことがあると思います。ちょっとした通なら、誰でも知っていそうなことではありますが、残念ながら正確なことは伝わっていないと思います。
なぜなら、「文字コード」という言葉は簡単ですが、その中身は迷宮だからです。

このため、中途半端な理解で済ませてしまう人が多いようです。

「文字に番号を付ける」というのが主たることですが、それは言うほど簡単なことではないのですね。

例えば、「このファイルの文字コードはシフトJISだ」といった表現をすると思いますが、これは間違いなのです。厳密性を追求するなら、「シフトJISは文字コード」という表現は誤りなわけです。


文字の符号処理について


文字を、電子計算機で扱う場合、文字コードとして扱いますが、実は「二つの異なる概念」が共存しているのです。

次の通りです。

(1) 文字集合(CCS)
(2) 符号化方法(CES)

つまり、文字コードは二つの概念からなっています。

まず一番目ですが、文字集合とは、文字と、それに付けられた文字番号の表を言います。
あくまで個人的には、これこそが文字コードであり、英語ではCCS(Coded Character Set)と言います。
直訳すると、コード化された文字集合、となります。


文字に番号が振られますが、実はこのままだと使えません。そこで、電子計算機で使えるように、これを符号に置き換えます。
これが二番目の符号化方法であり、英語ではCES(Character Encoding Scheme)と言います。
直訳してもそのまま、文字の符号化の方法です。

上にあげた、シフトJISとは、文字コードという概念のうち、この符号化の方法になります。


具体例


具体例を紹介しましょう。

いまこの文章を読んでいると思いますが、このFC2ブログは、「EUC-JP」と呼ばれる符号化方法(上に書いた(2)ですね)が使われています。
そして、実際の文字集合は、日本のJIS規格である、「JIS X 0208」と呼ばれるものが使われているのです。

もっと正確に言えば、WindowsやMac OSは、この「JIS X 0208」という国内標準規格に、更に独自の文字を追加しています。俗に「機種依存文字」などと呼ばれている物です。
特に有名なWindowsのそれは、「Windows-31J」という名前で国際登録されています。


結果として、Windows XPまでのWindowsであれば恐らくは、皆様は次の環境で、この文章を読んでいると思います。


(1) 文字集合(CCS) → Windows-31J (JIS X 0208に、幾つかの拡張文字を追加したもの)
(2) 符号化方法(CES) → EUC-JP


CCSとCESの分離理由


なぜ、CCSとCESが別れなければいけなかったのか。

それは、電子計算機はアメリカで生まれたからであり、そのアメリカの初期の電子計算機は「ASCII」(アスキー)という符号を使ったからです。

この当時はまだCCSとCESという区別はありませんでしたが、このASCIIと互換性を持たせる必要がどうしてもありました。
アメリカ人は傲慢なので、非互換のものは使ってくれそうにないからです。

幾多の変遷を経た後、日本その他の国々が協力し、「ISO 2022」(現在はISO/IEC 2022という名前になっています)という国際標準を作るに至りました。

各国は、このISO 2022という枠組み、つまり符号化方法に適合するように、文字集合を定めるのです。日本のJISも、その通りにしました。


JISコード?


さて、このISO 2022準拠の複雑怪奇な符号のうち、日本で使われているものは、俗に「JISコード」などと言われていると思います。
JIS X 0208から導かれるものは、この符号のみではないので、この名称も、決して正しいとは言えません。

またお気づきの方もいると思いますが、もちろんこれも厳密な意味では「文字コード」とは言えません。あくまで符号化方法であり、「文字コードと呼ばれる概念の一つに属するもの」です。
文字集合は、多くの実装で純粋なJIS X 0208が使われていると思います。


この規格は、ASCIIと互換性を持たせたまま、様々な符号を切り替えて使うことが出来る素晴らしいものでありました。が、同時に複雑怪奇な代物で、未だかつて誰も、これを完全に実装した人はいないと思われます。

皆様も使っているだろう電子メールも、ISO 2022に準じて文章を送受信するのですが、実際にはこのウチのごく一部をかいつまんだ「ISO-2022-JP」というものです。

つまり、完全版ではないのですが、日本語を使うという需要については、何の支障もありません。
この範囲内でも、ASCIIやJIS X 0208などを好き放題に切り替えて利用できます。


最後に


今後は、開発しながら思ったことなどをつらつらと書き連ねていきたいと思っています。
何か質問等あれば、お気軽にどうぞ。回答できる範囲で、回答したり、次回以降の記事の参考にしたり、したく思っています。

2008/11/12(水)23:22 |Comments(0) |Trackback(0)

製造開発 | 情報処理技術 | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

エンコードチェック ホーム ブログはじめました
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR