|
電脳で中国語をあつかう以上、さけて通れない文字コードがらみの問題について考えるページです。文字コードと文字化け、各種アプリ、Unicodeの説明といった構成で話を進めます。僕自身の知識が中国語関連に偏っているため、中国語に関わりがない人にはわかりにくいかもしれません。そのへんはご勘弁を。
--------------------------------------------------------------------------------
1.そもそも文字コードって
だいたいにおいて文字コードとはなんぞ?と言う話になります。日本語Windowsを使って、日本語(シフトJIS)に対応したソフトを使用して、日本語文書を作ったり、日本語のホームページを見たり、家計簿をつけるぶんには、文字コードを意識することは無いと思います。
ですが、たとえばネットからダウンロードしてきた中国語のテキストファイルを開きたい場合など、文字コードというものの存在を知らないと、そのテキストファイルを閲覧することすら難しくなってしまいます。中国語のファイルを開いたはずなのに、エディタ上で以下のような画面が表示されると途方に暮れますよね。
「オレメサユツ」など意味不明なカタカナが並んでいるのを見ると、これが中国語のファイルだとはとても思えません。かと言って日本語でもありません。これがいわゆる文字化けという現象ですね。電脳がトチ狂ったのか!と考えてしまうところですが、電脳は命令されたことをやってるだけなので、実は我々人間側の問題です。別に僕らが何した訳じゃないんですが、中国語のファイルを開く時には、中国語の文字コードを指定して開かないといけないのです。その手順を飛ばしているので「文字化け」という問題が起きるわけです。
「中国語の文字コードなんて知らないし、どうやって指定していいかもわからない」
わかります。文字コードを言語ごとに作らずに、共通のものにまとめてしまえば、こんな面倒なことは起こらないのに…ってとこですね。とはいえ、国ごと言語ごと、さらには同じ言語の中にも複数の文字コードが存在するこの現実をなんとかしないことには始まりません。
文字コードの正体に話を戻しましょう。テキストファイルというものの中身を覗けばわかりますが、電脳にとっては文章も絵も動画もメールもホームページもすべて数字の羅列に過ぎません。以下は先ほどの中国語文書をバイナリエディタというソフトで開いたところです。ところどころアルファベットも混じってますが、これは16進数という電脳にとって都合のいい方法で数字を表しているだけなので中身が数字ということにかわりはありません。
電脳から見たテキストファイル、といったところです。これでは日本語なのか英語なのか、それとも中国語なのかなんてわかりっこないですよね。ただ数字が並んでいるだけです。でも電脳にしたって手がかりがなければこの数字が何なのか判断できません。そう、電脳がこの数字を解読する手がかりとなるのが文字コードというものなのです。
文字コードというものは、数字が00だったらナントカという文字、01だったらナントカという文字という風に、数字と文字を対応づけた表になっています。ですから先ほどの中国語文書に使われている文字コードと同じ文字コードを電脳に教えてやれば、あの中国語もうまく解読できるようになります。暗号を解読するのに暗号表が必要なのと同じようなものですね。
さて、文字コードが暗号を解くのに必要な鍵のようなもの、と言うことはわかりましたが、だからといってこの文書が読めるようになるわけではありません。この文字コードだよ、と電脳に教えなければいけないのですから。次に代表的な文字コードを列挙してみましょう。
●日本語の文字コード
シフトJIS…Windows用
euc…………Linuxなど
●中国語の文字コード
GB2312……中国(簡体字)
BIG5………台湾、香港など(繁体字)
上記以外にも大量の文字コードが存在しますが、今のところは関係ないのでこのまま話を進めます。ここで電脳に伝えるべき文字コードはなんでしょう?さっきの中国語文書は中国のホームページからダウンロードしたものでした。ということは二つある中国語用の文字コードの内、GB2312を使用すれば解読できるかもしれません。
と、ここで新たな問題が生じました。この文字コードってどうやって電脳に教えればいいんでしょう?
--------------------------------------------------------------------------------
2.文字コードとソフト
上で文字化けを起こしていたのはWindowsに付属している「メモ帳」というアプリケーションです。おまけだし、見た目も貧弱なのであまり使ってもらえないかわいそうなやつです(実はなかなかの実力派だったりするんですが)。このメモ帳の最大の弱点は、テキストファイルを開く際に文字コードを指定できないところです。先ほど、「文字化けを回避するには文字コードを電脳に教える」という解決策を得たわけですが、この「教える」に該当するのが「文字コードを指定する」という操作になります。この文字コードを使ってテキストファイルを開きなさい、という感じです。
メモ帳では指定出来ない以上、文字コードを指定出来るアプリケーション(テキストエディタ)を探す必要があります。タケウチも一時期さんざん探し回りました。結果、以下のエディタやアプリケーションであれば、この問題を解決できることがわかりました。
●エディタ
EmEditor
xyzzy
●その他
MS-Word
個人的にはEmEditorをおすすめします。xyzzyは非常に多機能でEmEditorにはない魅力がありますが、使いこなせるようになるにはある程度学習が必要です。Wordを使っても良いんですが、あまり好みではないのでここでは無視します(ウソです。後でちょっと解説します)。手前ミソですが、拙作のC_Lexや朧でも中国語のファイルが編集可能です。
さて、EmEditorで文字コードを指定するのは簡単です。EmEditorを起動して、メニューから「ファイルを開く」を実行すると以下のダイアログが表示されます。表示されたら、このダイアログの下部に「コードページ」というところがありますので、そこで「簡体字中国語」を選択し、あとはファイルを選んで「開く」とすればOKです。
これで問題解決、やっぱりGB2312のファイルだったんだなぁ、何が書いてあるんだろう、ふんふん、と行きたいところですが、なんか様子がおかしい。↓
ところどころ漢字が表示されずに「・」になってます(画面の色がおかしい、というわけじゃありません。目が疲れないようにこういう設定にしてます)。
これはフォントの問題です。いくら文字コードを正しく設定しても、中国語を表示するためのフォントを設定していないとファイルを閲覧出来ないのです。日本語と中国語で共通する漢字は表示できますが、日本語のフォントには含まれていない簡体字もたくさんあるからです。
EmEditorでフォントを設定するには、「表示」メニューから「フォントの設定」を実行し、左下のダイアログが表示されたら「簡体字中国語」を選択して、「変更」を押します。そうすると右下のフォント選択ダイアログが表示されますから、適当な中国語フォントを選択して「OK」とします。ちなみにここではSimsunを選択しています。
どれが中国語のフォントかわからない、と言う場合は上記のSimsunを探すといいでしょう。数ある中国語フォントの中でも読みやすさはピカイチです。ちなみに繁体字の場合はMingliuというフォントを選ぶといいでしょう。これらのフォントが見あたらない時は以下のサイトを参照してインストールして下さい。
エキサイトの中国語関連ヘルプ:http://www.excite.co.jp/world/help/chinese/
こうして全ての設定が出来たら、以下のように中国語の文書が閲覧できるようになります。面倒だったかもしれませんが、文字化けもその仕組みさえわかってしまえば、たいした問題ではありません。
--------------------------------------------------------------------------------
さて、あまり気は進みませんが、Wordでこうした中国語テキストファイルを開く方法にも触れておきます。実は思いのほか簡単です。Wordを立ち上げて、メニューの「ファイルを開く」で開きたいテキストファイルを選択します。そうすると以下のダイアログで文字コードを指定するように促されますので、適宜簡体字や繁体字を選ぶだけです。中国語フォントに関してもインストールさえしていれば、Wordが正しいフォントを設定してくれるので、化けることはないはずです。
なんだ、それならWordの方が楽なんじゃない?という話になりますが、僕は改行したら勝手にインデントしたり、見出しを入れられたりするのが好きではないので、普段はWordを使いません。ちょっとお節介なんですよね。このソフト。
--------------------------------------------------------------------------------
3.インターネットと文字化け
さて、せっかくですからブラウザでいろんなサイトを見ている時に発生する文字化けについても触れておきましょう。中国のサイトを見たいのに、以下のように化けてしまうことがあります。
こういう時はあわてずに、インターネットエクスプローラの「表示」メニューから「エンコード」→「簡体字中国語」を選べば正しく表示されます。台湾や香港のサイトを閲覧している時は、「繁体字中国語」を選んで下さい。インターネットエクスプローラ以外のブラウザについては使ったことがないのでわかりません。すいません。
ちなみに、こうした文字化けはサイトのHTMLに不備があるために起こります。次の一行があれば文字化けは回避出来るわけですから、自分のホームページを作る時は気をつけたいところです(以下の例は簡体字中国語のホームページのものです)。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
ネットがらみの文字化けと言えば、他にもメール関連の文字化けがありますが、これに関してはソフトごとの違いが大きいので、次の機会に譲ります。
--------------------------------------------------------------------------------
4.そしてUnicodeとは
さて、これまで説明してきた文字コードは、日本語なら日本の文字コード、中国語なら中国の文字コードという風に国ごとに規格が定められていました。電脳における古参文字コードASCIIにしたって美国の規格です。こんな風に世界中で規格が乱立するといろいろ不便が生じます。
靴や服のサイズなどもいろんな表示方法がありますよね。ウェストが76cmくらいなので、ジーンズはサイズ30のを買って、靴は27cmなんだけど、表示を見ると8とか9とか書いてあるし、よく見ると靴底にはEEの二文字、かっこいいシルバーの指輪を買いたいなと思ったら、店員に「サイズはおいくつですか?」と尋ねられ「えーと指はわりと太い方です」とわけのわからない回答をしてしまう。いちいち覚えるのメンドクサイから表記はセンチで統一してください、と買い物のたびに泣きそうになるのは僕だけでしょうか?
このように貿易によって世界各国からモノが輸入されてくると、国内にはないモノを手に入れられる反面、生産国の規格を自国の規格に置き換える必要が出てきます。これって情報の世界でも同じなんです。
トルコ人のフセイン君から「詩を書いたので読んでくれ」とフロッピーディスクを手渡されても、僕の電脳から閲覧する限り、中に入ったテキストは意味不明な記号でしかありません。彼の使用している文字コードと僕の使用している文字コードが違う以上、読めないのは当然です。こういう時はトルコの文字コードを処理できるアプリケーションを用意するしかありません。まあ、個人間でのやりとりだし、おたがい慣れてくれば多少面倒でもなんとかなるもんです。
しかし個人間ならまだしも、インターネットの普及などで情報のやりとりが国境を越え、業務でさまざまな情報を取り扱う組織が増え、誰でも世界中の情報を入手できるようになった今日、もうちょっとスマートなやり方はないもんか、文字コードがバラバラだからろくすっぽ検索も出来ないじゃないか、ということになります。
そう。世界統一規格を作ってみんなで同じ文字コードを使えば、こういう七面倒くさいこととはオサラバ出来るわけです。理由はこれだけじゃないですが、Unicodeはそんな感じで制定されました。統一規格バンザーイといきたいところなんですが、そんなUnicodeにはいくつか種類があります。おかしな話です。ひとつにまとめるんじゃなかったのか?
Unicodeは、ISO 10646というので決められているようにISOで制定された規格です。Unicodeコンソーシアムという企業連合とISOが仲良く協力して作った規格です(ウソです)。その成り立ちはともかく、ISO 10646にはUCS(Universal Character Set)というものが 定義されています。世界各国の文字に番号を割り振った表のようなものでUnicodeのご本尊です。
で、ここからが面倒なのですが、UCSにはUCS-2とUCS-4が存在します。UCS-2はこの割り振られた番号を2バイトの数字で表現するもので、UCS-4は4バイト使って文字番号を表現します。今のところ、割とメジャーなのはUCS-2ですが、UCS-2では世界中の文字を収めきらないので、容量を増やしたUCS-4が定義されたようです。UCSについては文字番号を定義した表のようなもの、と覚えておけばいいでしょう。
このUCSを表現するための方式がUTF(Unicode Transformation Format)です。これにも複数の方式があります。
UTF-16は一文字を2バイト(16ビット)で表す文字コードです。どんな文字でも2バイトに固定されているので情報処理には便利です。UTF-16の文書には識別のためにBOM(Byte Order Mark)というマークがつけられることが多いようです。
UTF-16はUCS-2の定義そのままの文字コードという感じで好感が持てますが、今までASCIIなど1バイトで文字を表現していた欧米の方々にしてみれば、同じテキストを入力してもバイト数が2倍になってしまいます。情報量は同じなのに、文字コードが違うとテキストファイルの大きさが変わってしまうのです。今まで使っていたASCIIなどとも互換性がありません。まあ仕方のないことなんですが、普段漢字と無縁の人にはちょっと腹立たしいことかもしれません。この問題を解決するための方式がUTF-8です。ASCII文字を入力するぶんにはASCIIもUTF-8も互換性があり(つまりASCII文字の場合は1バイトしか使わない)、ASCII以外の文字を入力する時、たとえば漢字などを入力する時は3バイト使用するなどしてUnicode文字を表現します。欧米の方には便利な方式なので、プログラムの内部処理などでよく使われています。
UTFにはこれ以外にUTF-7、UTF-32があったり、LEやらBEやら記号がひっついたりしますが、日常的によく使うのはUTF-8とUTF-16なので、必要になった時点で勉強すればいいでしょう。ちなみにWindowsのアプリケーションで「Unicode」とある時はUTF-16を指すことが多いようです。UTF-8はそのままUTF-8なのに、どっちもUnicodeなのに、という疑問はそっと心にしまっておきます。
以上、Unicodeはこんな感じです。だいたいどんなものかわかっていただけるといいのですが、タケウチの説明下手は本人も自覚しておりますので、詳しく解説されているサイトにリンクを貼っておきます。
・UCSとUTF
・文字コードの話
Unicodeはとても便利です。テキストで日本語と中国語を混在させられますし、情報のやりとりも簡単になります。アプリケーションの開発などもかなり楽になります。問題点を挙げるとすれば、「漢字統合」と言って中日韓などで使用されている漢字の中で、形が似ている文字を無理矢理一文字にまとめてしまったために、骨、海、直などの文字が正しく表示されない問題や逆に意味、字形ともにほぼ同じなのに別々のコードが振られているため、検索が面倒などの問題があります。これらについては将来的な解決を期待しつつ、問題が生じないよう使用者側が注意するしかないでしょう。
|
|