見出し画像

NEC特殊文字とIBM拡張文字 - 機種依存文字の扱い

JISで漢字の集合が決められてから、それらをパソコンでどのように使えるようになっていったのかの流れを以下の記事などで書いてきましたが、いろいろなメーカーのいろいろなシステムで漢字が使われるようになるに連れ、なかなか面倒な話が増えてきました。

Windowsコードページの謎

JIS非漢字 - その謎のセレクション

JISで使える漢字や記号が制定されたにも関わらず、パソコンメーカーは自社のパソコンに独自の記号などを追加することは特に躊躇すること無く行われていました。とはいえ、他社のパソコンで作られた文書などに不用意に使われることもあって、これらを検出したり置き換えたりする必要がありました。これらの追加文字を機種依存文字と呼ぶようになりました。

機種依存文字

大型機で既に利用していたという都合もあったのでしょう、NECとIBMも当然のようにJISに含まれていない文字を自社のパソコンに追加しました。

NEC特殊文字

IBM拡張文字

この頃は、ネットも無いですし大型機が絡めば当然、同じメーカーで囲われているので、独自の文字が問題になるとすれば、他社のプリンタで出力すると該当文字が出ない場合があるという程度でした。そもそもアプリで使っている限り、どの文字が機種依存文字であるかという判断が出来るわけもなく、当然のように機種依存文字が蔓延していったわけです。

IBM 拡張文字・NEC 選定 IBM 拡張文字・NEC 特殊文字

実はパソコンに限らず、日本語ワープロなどにおいても機種依存文字は、むしろ自社の製品ではより多くの漢字や記号が使えるとアピールしていたくらいで、必ずしもJISの未定義領域コードに文字を割り当てるとは限らず、いろいろな手段を使って文字を増やしていました。ワープロに関しては、文字だけではなく書式なども変換が必要だったので、いわゆる変換ツールと呼ばれるソフトを使って、これらの非互換性に対処していたのですが、MS-DOSやWindowsが普及し、同じアプリがいろいろな機種で使われるようになると、これらの文字が問題を引き起こします。

マイクロソフトは、日本語コードに関してはシフトJISを基本とするコードページ932という文字セットを使っていましたが、Winodwsの日本語化にあたり、既に多く使われていたNECとIBMの独自文字を取り込む形で決めました。

Microsoftコードページ932 (OEMコードページの統合)

それまでにMS-DOSなどで使われていた文字セットへの影響を少なくするために、両者が独自に追加した文字のうち同じ(に見える)文字に対しても、それぞれのコードを割り当てたために、例えばローマ数字のⅢはFA4C(IBM)と8756(NEC)があり、ⅲはFA42(IBM)とEEF1(NEC)のコードがあります。これらのコードに対しては、ⅢはNECのコードにⅲはIBMのコードに統一することになっていてIMEなどで入力する際には適切に選ばれるのですが、既に入力されているコードに関しては、そのまま使われ、見た目では差がわかりません。

そもそも、ローマ数字は半角アルファベットでも表現できるので、同じ意味を示すのにいろいろな組み合わせがあり、こんな文字を使うなという人も多くいたのですが、ワープロソフトを使っている人に理解されるかと言えば、難しいものがありました。株式会社を示すカッコ株”㈱”もこの問題がありましたしね。

この問題は部分的にはJISの改定に取り込まれたのですが、結局Unicodeになっても引き継がれることとなってしまいました。文字によっては3つのコードを持つことになったものもあり、合字(複数の文字を組み合わせて文字を作る文字)も合わせると、もう見た目だけでは同じコードを持つかは誰にもわからなくなってしまいました。この影響は文字列の一致の判定や文字列のソートに影響があるので、何故かファイル名を指定しても実は文字コードが違っているので、ファイルが消せなくなったり、ソートしたのに同じように見えるファイル名が遠く離れて並ぶなんていうことも起きます。

パソコン通信が始まった頃、自分のパソコンではちゃんと表示される文字が、読む人のパソコンでは文字が割り当てておらず、豆腐”⬛️”として表示されて伝わらなくなって「機種依存文字なんか使うな!」というキャンペーンがはられたのですが、人間が文字をコードで入力しているわけではなくIME(FEP)任せなのと、やはり普及している機種の力が強く、その扱いは掲示板ごとに温度差がありました。インターネット時代になっても問題は何も変わっていないのですが、パソコンの能力が増して、多くのOSがどの機種の文字であっても表示できるようになったので、あまりうるさいことは言われなくなったのですが、文字を処理するソフトの負担は増えています。もちろん扱えると言っても最終的に表示を行うフォントに、その文字が含まれていなければ駄目なので、今でもフォントによっては出てこない文字があって、こんな文字を使わないでくれと思う人は少なからずいます。

Shift_JIS系文字一覧イメージとSJIS・MS932・CP943・SJIS2004の違い

自分のためのデータであるとか、印刷して使うだけで済む場合ならいざ知らず、人に渡したり公開するデータに関しては、今でも標準的な文字セットであることを確認しないと、ファイル名に使えばダウンロードする際に問題を起こしたり、ファイルを開いた人が読めない文字になってしまったりします(PDFにフォント組み込んでなかったりするとね)。意図しない文字になってしまうのは、他にもいろいろな原因があるのですが、文字が変換されてしまったらしまったで、今度はチェックサムが合わなくなったり、ファイルを比較すると不一致と判定されたりといろいろなトラブルを招きます。

ここまでシフトJIS周りの説明をしてきましたが、主な文字コードには他にもEUCであったり、UnicodeやいろいろなUTFもあります。もちろん世界には日本語以外の文字もたくさんあるわけで、すべての文字が「正しく」扱われるのかは、もう誰にもわかりません。ドキュメントとして使われるだけであればまだしもファイル名はもちろんURIに使ったり、データベースに取り込まれたりすると、その扱いは実にケースバイケースです。

世の中の文字セットが常に進化しているので、この手の問題が無くなることは無いでしょうが、必ずしもそういう文字を使った人が悪いとは言えないので、どう困ってどう対処してほしいのかをやさしく伝えてあげてください。

文字化けと言えば2バイト目が”¥”になる文字の話もしておかないとな。

ヘッダ画像は、JIS X 0213:2004 に登録されているNEC特殊文字

#文字コード #シフトJIS #コードページ932 #IBM #NEC #機種依存文字  

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