2015年6月30日火曜日

富士通メインフレームの文字コード(その2)

こんにちは、綱島です。



前回に引き続き、富士通メインフレームの文字コードの話です。

前回、画面には正しく表示できているのにそのデータをダウンロードすると、文字化けをしていました。文字化けした文字は、PCには存在しない文字で、「吉」でもつちよしと呼ばれる文字でした。
しかし、このように画面上は問題なく表示できていましたね。その仕組みの話です。



文字を画面上に表示するためには、「この文字」を「このフォント」を使って「この位置」に「この色」で表示してくださいとシステムにお願いします(本当は、もっと複雑ですがわかりやすくするため、簡単に書いています)。

「この文字」は文字コードで指定します。「このフォント」は、MS明朝とかMSゴシックとかのフォントを指定します。

そこで、前回つちよしがダウンロードして文字化けした理由として、JISコードにはない文字なので仕方なく「□」していますと書きました。文字を表示するために文字コードが必要なら、文字コードがないつちよしは、表示できないことになります。ダウンロードしたテキストファイルは、文字コード以外の情報を持つことができませんが、表示するときには「フォント」という、もう一つの情報を指定してます。このフォントの情報を利用して、JISコードにはない文字を表示しています。


この画像は、表示するフォントをMS明朝からMSゴシックに変更しました。


下の吉(つちよし)だけは変わっていませんね。これは、JISコードに無い文字なので、一般的なMSゴシックやMS明朝といったフォントを指定できず、特別なフォントに固定しているのです。これが、先ほどのフォントの情報を利用しているということにないます。


では、この特別なフォントは、一般のフォントとどう違うのでしょうか?
この特別なフォントは、富士通社製で拡張漢字を表示するためのフォントです。フォント名は「FF特殊112」といいます。

メモ帳で、「既存事業戦略」と入力するこうなりますね。フォントはMSゴシックです。


この状態のまま、メモ帳のメニューの「書式」-「フォント」でフォントを「FF特殊112」に変えてみましょう。

全く違う文字で表示されます。「FF特殊112」は、シフトJISのコード範囲に全く違う文字を登録して、通常ではPCに入っていない文字を表示できるようにしているのです。

この中にあの「つちよし」もありました。
対応するMSゴシックの文字では「既」です。この文字のシフトJISのコードは、0x8AF9です。
この「FF特殊112」で、0x8AF9の文字を表示してくださいとお願いすると、つちよしが表示できるという仕掛けです。

前回の「吉田さん」の各文字の文字コード表に表示するための情報も追加すると、こうなります。



上の4文字の指定フォントの「特に指定なし」とは、一般的なMSゴシックやMS明朝のフォントが使えるという意味です。しかし、拡張漢字のつちよしだけは、このフォントを必ず指定しないと表示できません。

表示の時に使う指定コードですが、上の4文字はシフトJISの文字コードと同じです。そのため、前回お話ししたようにメインフレームからのコードから計算できます。しかし、つちよしの指定コードは、計算では算出は出来ません。
そのため、拡張漢字についてはメインフレームの文字コードから、指定コード+指定フォントが引けるような仕組みがあります。この仕組みは、富士通社より提供されていて、ライブラリとこの特別なフォントがセットになって販売されています。

では、なぜこのような面倒なことをしてまで漢字を表示するのでしょうか?
次回は、このことを踏まえて富士通メインフレームの文字コード体系のお話をします。

0 件のコメント:

コメントを投稿