見出し画像

Windowsコードページの謎

日本語が本格的に使えるようになりだした頃、そのコードはJISコードを巧妙に細工してモード切替を不要にしたシフトJISと呼ばれるものが使われました。当時は英語のみが使える環境でプログラムが作られることが殆どだったので、これを移植して日本語を扱えるようにすれば充分だということだったのです。

文字コード

Shift_JIS

最初に使われたのはCP/M-86という説もありますが、一般的に使われるようになったのはMS-DOS(PC-DOS)が最初です。これはWindowsにも引き継がれ、Macintoshも日本主導で日本語化が行われたという経緯もありシフトJISが使われました。

さてシフトJISの問題は米国標準であるASCIIに対する拡張であって、それ以外の国のローカルコードのことを考えていないことです。例えば英国では一部の記号がポンド記号に置き換わっているコードが使われていましたし、他のヨーロッパ諸国の言語でもいろいろなアクセント付きアルファベット文字があり、それぞれの国に向けたローカライズが行われていました。ですから日本語環境でドイツ語のファイルを開けばウムラウト付きアルファベットを表示できるわけでもなく、妙なカタカナなどに化けてしまうのは当たり前だったわけです。

マイクロソフトは、このような地域特有の文字セットをコードページという数字を割り当てて管理していました。どのコードページがどのタイミングで決められたかは定かではありませんが、日本向けのシフトJISを使う場合のコードページには932という数字を割り当てました。

コードページ

Microsoftコードページ932

MS-DOSの時代には、国であるとか文化という意味は含まれていなかったようで、単にDOSをローカライズする企業ごとに異なるコードページを用意しているだけ(OEMコード)という認識だったようです。ですからNECとIBMで異なるコードページが使われることになったとしても不思議では無かったわけです。

おそらくですが既にヨーロッパ諸国向けのコードページはもうあったようですが、日本語のように2バイトを扱うコードページは932が最初だったと思われ、単に文字の入れ替えなどでは間に合わず、独自の処理を追加する作業を企業ごとに行うのはメーカーも大変ですし、ユーザとしてもメーカーごとの微妙な違いを意識したくないのは当たり前なので、同じコードページを採用することにしたのだとは思います。

ということで、パソコンの世界では日本語コード=シフトJIS(=コードページ932)という形で落ち着いたようです(なお、この時代UNIXな世界はまだ普及していません)。ちなみに現在もコードページは使われており、文字コードはUNICODEが基本となりましたが、それ以外にも日時の書式や数値の桁区切りなどの情報に使われています。

コード ページ識別子

このコードページ932で扱われている具体的な文字セットは、シフトJISが基本とは言え少しずつ変化してきて今に至るのですが、あくまでローカルなひとつのPCの中で扱うコードに過ぎないので、フロッピーやネットなどで他のPCとやりとりするコードではありません。ですからLANであれば全体で同じコードページに設定していれば構わないとはいえ、インターネット上でデータをやりとりするものでは無いのです。

最初はデータをフロッピーでやりとりするような時代から、異なるコードページが設定されたPCで作られたデータを、まずファイル一覧を表示した時点で、ファイル名に日本語が使われていようものなら、何だかわからない名前となってしまいファイルを開くことも難しくなります。逆にドイツ語やフランス語で作られたファイルを日本語のPCで開こうとすれば、ところどころ半角カナが登場したりするわけです。ましては中国語の場合は破滅的で数ある中国語コードページの一部では第2バイトに制御文字の範囲を使うこともあったようで、dirをするだけでファイル名の途中でどんどんスクロールされたりベルが鳴る始末でした。

こんな文字コードをインターネット普及とともに、クライアントPCとして普及していたという数の暴力でネット上でも使い始めたのですから、それまでの古いネットユーザとの間で軋轢が生じたのも無理はありません。電子メールでは「お前のメールは読めないんだよ」と怒られ、シフトJISでWEBページを作れば「JISを使え!」と指摘されてしまいます。この辺りは適切なソフトなりツールを使うことで回避できたのですが、添付ファイルの中身の文字コードまではいかんともなりません。まあ多くの人はコンテンツ自身はともかく、ファイル名であるとかメールの題名であるとか検索に使われるようなフィールドに日本語を使わないようにするというのが精一杯なところでした。

この辺りからご本家の方でも国際化対応がさかんに謳われるようになり、そのルールにさえ則っていれば特別な対処をしなくても日本語を扱えるようになっていきます。シフトJISも数ある日本語コードのひとつとして認められ、シフトJISだよと何らかの形で表明しておけば、英語で使っているWinodwsマシンであってもフォントさえインストールすれば読めるようになりました。この過程で世界中で使われる文字コードも、もう1バイトではどうにもならないということでUNICODEが制定され、徐々にこちらが基本の文字コードになっていきました。

また日本語コードとしてもJIS第1水準、第2水準だけではなく、補助漢字などの文字が追加され、もはやシフトJISの方法では全ての漢字を扱うことができなくなり(もう余分なコード領域を作れません)、徐々にUNICODEに統合されることになります。

とはいえ今でもコードページは自体は健在です。また特にExcelなんかにはシフトJISもしぶとく生き残っています(CSV保存をなんとかしてくれ)。ということで、まだまだヒョッコリとシフトJISの亡霊が出てくることもあるので、第1水準と第2水準に含まれていない文字を使っていないかは未だに気をつけないといけません。お願いだからファイル名に絵文字とかは使わないでね^^;

ヘッダ画像は、以下のものを使わせていただきました(Euler diag for jp charsets)。
https://commons.wikimedia.org/wiki/File:Euler_diag_for_jp_charsets.svg
User:Hissakun~commonswiki, CC 表示-継承 3.0, https://commons.wikimedia.org/w/index.php?curid=82138426による

#文字コード #日本語コード #マイクロソフト #コードページ #シフトJIS #CP932  

この記事が気に入ったらサポートをしてみませんか?