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

4.4 日本語の文字コード

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

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

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

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

というファイルを作成して、 od -x1 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 の文字コードを変換する
a308-00% nkf -j kanji.txt > kanji-jis.txt  
a308-00% nkf -s kanji.txt > kanji-ms.txt  

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

通称「JIS 漢字」
通信により情報を交換するために作られた国際的な規格に従ったもの。 文字コードを切り替えるために、 目印となる特別な文字列16を用いる。 電子メイルなどで、 日本語メッセージの通信をするときに最もよく使われる ISO-2022-JP (後述) の 基礎となった。 実は kterm では JIS 漢字のデータも普通に表示できる。
a308-00% cat kanji-jis.txt
桂田 祐史
a308-001% od -tx1 kanji-jis.txt 
0000000 1b 24 42 37 4b 45 44 1b 28 42 20 1b 24 42 4d 34
0000020 3b 4b 1b 28 42 0a
0000026
a308-00%

「桂」の JIS コードである 0x37, 0x4b が現われている。
通称「MS 漢字 (シフトジス)」
パソコンの世界のために作られた規格 (Windows, Mac などで採用されている)。 「半角カタカナ」も効率的に埋め込まれている。 情報科学センターのワークステーションの通常の設定では直接表示できない (ただし emacs では扱える)。
a308-00% cat kanji-ms.txt
jc S  (いわゆる文字化け)
a308-00% od -tx1 kanji-ms.txt
0000000 8c 6a 93 63 20 97 53 8e 6a 0a
0000012
a308-00% 

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

訂正
2005年6月2日現在、情報処理教室の設定では、 emacs で普通に日本語テキスト・ファイルを作成すると、 JIS 漢字コードのファイルができる (これはちょっと問題だと思うのだが…)。 そこで以下の手順で作業すること。
a308-01% emacs kanji-jis.txt &  
a308-01% nkf -e kanji-jis.txt > kanji.txt  
a308-01% nkf -s kanji-jis.txt > kanji-ms.txt  
a308-01% od -tx1 kanji.txt  
a308-01% od -tx1 kanji-jis.txt  
a308-01% od -tx1 kanji-sjis.txt  




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