ASCII文字コードを中心に、すでに解説したが、以下に要点のみ再掲する。
方策1:日本語文字を含む部分の直前と直後に目印を入れて区別する。
61 61 61 1b 24 42 61 61 1b 28 42
a a a ESC $ B a a ESC ( B
~~~~~~ この部分が日本語(2バイトで「瘁」を表す)
上図と右図は「aa瘁」と書いたファイル(をJISエンコーディングで保存したもの)の詳細(ダウンロードして自分で16進ダンプしてみて下さい)。
方策2:文字コードそのものに印をつける
具体的には、右図のように8bitのうちの最上位の(7bitコードでは使われていなかったので0になっている)bit(MSBと呼ぶ)を「立てる」(つまり 1にする)、という方法がある。
Shift_JIS(当初は「MS漢字コード」と称した)やEUCといったエンコーディングがこの方法。これだと日本語部分とASCII文字部分が各バイトのMSBを見るだけで識別できる。
実際には この2つのエンコーディングではもう少し複雑な印のつけ方をしている(詳細は略す)が、原理的にはこのようなものだと認識して間違いない。
実際に Shift_JISで保存されたテキストファイルを16進ダンプさせてみると、日本語部分の各バイトの16進表記の上位桁(つまり左側の数字)が 8~F の間の値になっていることが確認できるだろう。
6 | 1 | <=> | e | 1 |
0110 | 0001 | 1110 | 0001 |
「MS漢字コード」を策定したMS(マイクロソフトの日本法人)が自社のOSの内部コードとして使い続けているのが Shift_JISによるエンコーディング方式。Windowsの内部、およびWindowsに標準添付されるアプリケーションが読書きに使う文字表現も(特に明記されることは少ないが)このShift_JIS。
要約と余談
上記の解説は一度に読んで覚えるには煩雑すぎるだろうから、参考情報としてとどめておき、
もちろん規格を定めるだけでは日本語化は達成できない。
PC(日本独自規格のPC以外のもの) の画面にASCII文字セット以外の文字が表示できない時代が長く続いていた状況を打破する方式として、(IBMの日本法人が開発した)DOS/V という方式が大きなインパクトとなった、という経緯があり、その名前は現在もPCの1カテゴリーを表す名前として残っている。
コード エンコーディング (文字セット) ASCII -> _ JIS -> 7bit JIS EUC-jp Shift_JIS Unicode -> UTF-8 UTF-16 :
文字コード、という(やや曖昧な)用語でShift_JISやUTF-8を漠然と区別して使い分ける、という考え方で、日常の不都合はないだろう。
逆に、当初は独自規格だったものがマーケットに受け入れられ普及し、国際規格として認められるに至る過程で(中身はほぼ同じであるのに)名前が変わるという例も見てきた。
といった感じ(けっこう複雑ですよね)。
右図のように、我々をとりまく情報システムでは、ざっくり要約すると2種類の文字コード(エンコーディング;Shift_JISとUTF;図では頭文字のみ記した)が拮抗しながら使われている状況。
Windowsパソコンでネットを使うユーザのうち、ネット上の資源にブラウザ(等の特定のアプリケーション)だけを介してアクセスしている限りは(Windows とブラウザが文字の差異を適切に扱うので)問題ないが、
少し複雑なことをしたいという場面になると、この文字コードの問題が表面化するので、 若干の知識は持っておくのが望ましいだろう。