中文電脳/文字コードの基礎知識 のバックアップソース(No.2)

*中国語ページが見られないわけ [#eac2281c]

**1.文字化けと文字コード [#df0106a6]

インターネットをある程度使いこなしている人ならば、何かの拍子に中国語のページを開いてしまい、意味不明の文字の羅列にびっくりした経験があるかもしれない。例えば、こちらをクリックしてほしい。人民日報のホームページが表示されるが、画像部分は読めるものの、中国語部分が意味不明の文字に化けているはずだ。この現象を“文字化け”(乱碼)という。

文字化けはまぜ発生するのだろうか?それは、日本と中国では使用している文字コードが違うからだ。

コンピュータというのは、よく知られるように、「○●」の二進数しか扱えない。しかし、それでは人間が理解できるような文字や文を表現することができない。そこで、文字に番号を振って、その番号をもとに文字の図形を呼び出して表示したり印刷したりする方法が考えられた。これが、文字コードだ。

具体的には、コンピュータでは二進数4桁●●●●を一組とした、一六進数が使われる。それらは、便宜的に0~9、A~Fの文字で表現される。そして、文字に番号を振る際には、それを二つ一組にした●●●● ●●●●が使われた。この合計八桁の二進数のセットがバイトだ。1バイトでは、16×16、合計256種類の文字に番号をふることができる。その番号に基づいて、別に用意した絵記号一覧から文字の画像を読み出すことで、コンピュータで文字を表示させるのだ。こうして、制定された英語の文字コードがASCII(アスキー)コードだ。一文字の表現に1バイトを使っている。

, ,2,3,4,5,6,7,略 
,0, ,0,@,P,`,p,
,1,!,1,A,Q,a,q ,
,2,",2,B,R,b,r ,
,3,#,3,C,S,c,s ,
,4,$,4,D,T,d,t ,
,5,%,5,E,U,e,u ,
,6,&,6,F,V,f,v ,
,7,',7,G,W,g,w ,
,略, , , , , , ,

例えば、12は「!」、65は「V」というように、アルファベット、数字そして主要な記号がコード化され、コンピュータで表示できるようになった。

しかし、数千数万もの文字数がある東アジア諸語をコード化するには、256文字では到底足りない。この問題を解決してはじめて制定された漢字コードが、日本のJISコードだ。実際にパソコンで使われているのは、JISコードの番号をずらした、シフトJISコードだが、収録文字は変わらない。

シフトJISコードでは、2バイトで文字を表現する。しかしASCIIコードとの整合もはからねばならない。そこで、ASCIIの空き領域に注目した。たとえば、ASCIIコードの「81」は空いている。そこで、「81」で始まる番号は2バイトということにして、8100~81FFまで、256文字を定義した。これならば、2で始まるバイトはASCII、8で始まれば漢字、というように、従来のASCIIも漢字やかなも使うことができる。JISコードでは、漢字約六千字が定義されているが、規格は制定されてからこれまでに何度か更新されている。

JISコードが制定されると、東アジア各国は、それに倣って独自の文字コードを制定した。主なコードを比較すると次のようになる。

,国・地域,日本,中国,台湾・香港,韓国 
,コード名,JIS,GB/GBK(国家標準碼/同 拡展碼),Big5(大五碼),KS 
,収録漢字数,約6200,約7000/21000,約13000,約5000 

ややこしいことに、同じ中国語と言っても、中国と台湾とでは文字コードが違う。中国のGBコードは簡体字、台湾Big5コードは繁体字を収録するため、定義されている文字も全然違っている。ちなみに、中国と台湾とでは文字コードばかりでなく、コンピュータ用語も全く違うので、注意が必要だ。

これらの文字コードが制定された当時、インターネットを通じて、国際的に電子ドキュメントをやりとりする時代が来ることなど誰も考えていなかった。そのため、これらの文字コードの間で互換性がはかられることはなく、逆に独自の文字コードを持っていることが先端技術国家の象徴であるかのように考えられてきた。この考え方は、現在でも一部に根強い。

**2.文字化けのメカニズム [#j26078af]

以上のように、日本と中国では使用している文字コードが異なっている。そのため、文字化けが発生するのだ。では文字化けがいかに発生するのか、詳細に見てみよう。

http://wagang.econ.hc.keio.ac.jp/pc/faq/data/test1.html

上のリンクを新しいウィンドウで開くと、次のように表示されるだろう。

 ヲュス_・ミ、jセヌ、蠕ヌウ。

なにやら呪文のような文字列、文字化けしているのだ。

では、なぜこのように文字化けしてしまったのだろうか?「ヲュス_・ミ、jセヌ、蠕ヌウ。」を、Shift-JISのコード番号で表記すると、次のようになる。

,コード番号,A6,AD,BD,5F,A5,D0,A4,6A,BE,C7,A4,E5BE,C7,B3,A1 
,Shift-JIS収録文字,ヲ,ュ,ス,_,・,ミ,、,j,セ,ヌ,、,蠕,ヌ,ウ,。 

同じコード番号を、台湾Big5コードで解釈すると、次のようになる。

,コード番号,A6AD,BD5F,A5D0,A46A,BEC7,A4E5,BEC7,B3A1 
,Big5コード収録文字,早,稻,田,大,學,文,學,部 

このように、本来Big5コードで解釈しなくてはならない文字情報を、誤って日本語Shift-JISコードで解釈してしまうために、文字化けが発生しているのだ。ここで挙げた例は台湾Big5コードの文字化けだが、中国GBコードで文字化けが発生する原因も同じだ。

**3.Unicodeの登場 [#ma2a67aa]

インターネット時代になり、国家の枠組みをこえて情報が行き来するようになると、文字コードの互換性問題が脚光を浴びるようになった。また、国際的ソフトメーカーでは、世界各国語版を開発するコストを削減する必要に迫られた。

そのため、マイクロソフト、IBM、アップルコンピュータなどが行動して、世界中の文字を一つのコード体系にまとめたUnicodeを制定た。

Unicodeの漢字部分は、日中台韓の各文字コードに含まれる漢字を、字形に基づいて約二万九百字に統合したもので、各国の頭文字を取ってCJK統合漢字と呼ばれる。

Unicodeに対しては、昨年、日本文藝家協会による的はずれな排撃キャンペーンが行われてきた。確かにUnicodeは多くの問題を抱えている。しかし、従来のJISコードの約三倍もの漢字が利用できるようになるなど、多くのメリットがあることを忘れてはならない。まして、今やWindowsもMAC OSもUnicodeを標準で搭載し、そのお陰で文字化けすることなく多言語を簡単に処理できるようになっているのだ。一方的な排撃や称賛ではなく、問題点を理解した上で、それに如何に対処し使いこなしさらには将来の文字コード規格に結びつけてゆくか、建設的取り組みこそが必要なのではなかろうか。