next up previous
Next: 腕試し用プログラミング課題1 Up: 3 テキスト・ファイル Previous: 3.3 ASCII コード表を作ろう

3.4 日本語の文字コード

日本語の文字コードは JIS (日本工業規格) で決められている。日本語にお ける文字数が多いため12、1 文字を表すのに 16 ビットを用いる。

例えば「桂」という文字の JIS コードは 0x374b である。

しかし、ファイルの中に 0x37, 0x4b というバイト列をそのまま入れたので は、ASCII の '7', 'K' と区別がつかない。両者を混在させるには何らかの工 夫が必要になる。

情報科学センターの Solaris (UNIX) 環境では日本語 EUCという 文字コードを用いている。やはり emacs を用いて
kanji.txt
桂田 祐史

というファイルを作成して、 od -cx kanji.txt としてみると、 「桂」が 0xb7, 0xcb という 2 バイトで表現されていることが分かる。 これは JIS コードの上下 8 ビットに それぞれ 0x80 を加えたものになっている:

\begin{displaymath}
\texttt{0x37}+\texttt{0x80}=\texttt{0xb7},\quad
\texttt{0x4b}+\texttt{0x80}=\texttt{0xcb}
\end{displaymath}

(もともと ASCII で用いている数値は 0x7f までで、0x80 以上の数値は使わ れずにあ空いている。 その部分に JIS コード表の文字を埋め込んだことになっている。)

日本語 EUC 以外にも、ASCII の文字と日本語の文字を混在を可能にした文 字コードはいくつかある。

準備: nkf を用いて kanji.txt の文字コードを変換する
isc-xas5% nkf -j kanji.txt > kanji-jis.txt  
isc-xas5% nkf -s kanji.txt > kanji-ms.txt  

(nkf については、付録 A を見よ。)

通称「JIS 漢字」
通信により情報を交換するために作られた国際的な規格に従ったもの。 文字コードを切り替えるために、 目印となる特別な文字列13を用いる。 電子メイルなどで、 日本語メッセージの通信をするときに最もよく使われる ISO-2022-JP (後述) の 基礎となった。 実は kterm では JIS 漢字のデータも普通に表示できる。
isc-xas06% cat kanji-jis.txt
桂田 祐史
isc-xas06% od -cx kanji-jis.txt
0000000 033   $   B   7   K   E   D 033   (   B     033   $   B   M   4
            1b24    4237    4b45    441b    2842    201b    2442    4d34
0000020   ;   K 033   (   B  \n
            3b4b    1b28    420a
0000026

「桂」の JIS コードである 0x37, 0x4b が現われている。
通称「MS 漢字 (シフトジス)」
パソコンの世界のために作られた規格 (Windows, Mac などで採用されている)。 「半角カタカナ」も効率的に埋め込まれている。 情報科学センターのワークステーションの通常の設定では直接表示できない (ただし emacs では扱える)。
isc-xas06% cat kanji-ms.txt
jc S  (いわゆる文字化け)
isc-xas06% od -cx kanji-ms.txt
0000000 214   j 223   c     227   S 216   j  \r  \n
            8c6a    9363    2097    538e    6a0d    0a00
0000013
isc-xas06% 

「桂」が 0x8c, 0x6a となっているが、 どういうルールで変換されているかはちょっと分かりづらい。 付録 D に JIS を MS 漢字に直す C の関数をあげておく。




next up previous
Next: 腕試し用プログラミング課題1 Up: 3 テキスト・ファイル Previous: 3.3 ASCII コード表を作ろう
Masashi Katsurada
平成20年10月18日