パソコンの文字処理は「文字コード」と「文字フォント」という仕組みを中心におこないます。これらの設定に食い違いが生じすると文字化けや文字抜けという状態が起きます。トラブルに対処するためには、日本語文字表示の仕組みについて必要最低限の知識が必要になります。ポイントは「文字コード」や「文字フォント」には複数の規格があり、これらを設定で変更できるようになっていることです。
文字抜けや文字化は「文字コード」の問題だけで起きる現象ではありません。使用文字コードと対応するフォント(字形情報)という問題があります。Windows XPからWindows Vistaにアップグレードするときには問題が起きました。詳しくは「フォント」のページをご覧ください。
また、表示制御のシステムファイルが削除されたり、新しいファイルが古いものに上書きされたりしても起きます。データファイルが部分的に壊れた場合やデータ改竄タイプのウイルスに感染した場合にもなります。
「文字コード」とは
コンピュータの基礎表現は2進数のコード(符号)です。コンピュータで文字を取り扱えるようにするには、文字ひとつひとつをどのようなコード(符号)で表すかを決める必要があります。このコード(符号)割り振り規格を「文字コード体系」または単に「文字コード」といいます。
「文字コード」を16進数の文字コード番号で一覧表にしたものを「文字コード表」といいます。通常、「文字コード表」は16進数番号によるマトリックスであらわします。
下図はMS-IMEのIMEパッドのシフトJISコードの文字一覧のウインドウです。上部、横に並んでいる「0123456789ABCDE」は16進コードの一桁目です。縦に並んでいる「8240,8250,8260, …」が他の部分を表します。コード「824F」は数字の「0」、コード「8250」は数字の「1」、コード「8251」は数字の「2」、コード「8260」は英大文字の「A」、コード「83401」はカタカナ「ァ」です。
「パソコン文字コード辞典」とは文字ごとにその文字体系ごとの文字コード番号を明記した辞典です。最近は通常の国語事典や漢和辞典でもパソコンの文字コードが記載さています。
「文字コード体系」の規格は複数あります
パソコンは欧米で発展したものですので、パソコンが8ビットの時代は米国のASCII(アスキー)コードを中心に使いました。16ビットパソコンの登場により、日本をはじめいろいろな地域言語に対応が可能になり、その地域言語での文字コード体系が策定されました。
ただし、文字コード体系に使えるコード(符号)には規定(範囲制限)があるため、「異なる地域のものとコードが重複する」「同じ言語でも策定する団体や機関により文字コード体系が異なる」などの問題がありました。
現在は、国際規格の文字コード体系の策定がISO(国際標準化機構)で行われています。基本ソフトのWindowsではXPまでシフトJISを標準としてきましたが、現在のWindowsでは「Unicode(ユニコード)」の「UTF-8」規格が標準となっています。
Windows文字コードの標準とは標準的に使うということでそれしか使えないということではありません。少し専門的になりますが、内部処理ではWindows文字コードは以前から「Unicode(ユニコード)」が使われていますが、過去と互換性を持たせるため、内部で自動的に変換処理されています。
文字抜け・文字化
コンピュータに入力された文字は「文字コード」に従って、該当の文字を表示、印字、記録します。コンピュータ間で正しいデータのやり取りができても、文字コードの規格は複数あるため、パソコン同士の使用「文字コード体系」が一致していないと文字化けや欠落などの不都合が起きます。現在はソフトウエアレベルで、文字コードの違いを対応調整できるようになっていますが、うまく動作しないこともあります。
文字抜けや文字化が起きた場合は、最初にソフトウエアの文字コード設定を確認します。日本では、日本語文字コードに「シフトJISコード」を標準として使いますが、他のものは使わないということではありません。Webページには「Unicode」や「EUC」が基準になります。
通常、文字コード指定は標準設定(デフォルト)のまま使用しますが、文字コード設定(エンコード)がシフトJISなどに固定されていると思わぬ文字表示エラーが起きることがあります。ソフトウエアレベルの文字コード設定(エンコード)は「自動選択」を有効にしておくことをおすすめします。
主な文字コード体系
JISコード JIScode
日本工業規格(JIS)で制定した漢字を中心とする文字コード体系です。正式名称は「情報交換用漢字符号系」といいます。JISコードはいくつかの改訂規格があり、名称は「JIS X0208:1997」の形式であらわします。「X0208」は改訂内容、「1997」は改訂年をあらわします。
ANK文字 アンクもじ alphanumeric and kana character
JISコード(JIS X0201)に8ビット(1バイト)のコードで割り当てられている英数字(Alpha)・記号(Numeric)、カタカナ(Kana)のことをいいます。このコードで表示される文字を通常「半角文字」といいます。
JIS漢字コード
JISコードの漢字コード部分をいいます。漢字コードは使用頻度により、第一水準、第二水準などの区分けがされています。第1水準は基本的な漢字、第2水準は人名などの固有名詞の漢字になります。
第1水準と第2水準で、一般的な事務文章ならば最低限のものはできますが、人名・地名漢字などないものがあり、外字機能でつくる必要がありました。外字機能で作った文字は各使用者が自分のパソコンで独自に追加した文字です。同じ外字登録ファイルを使用しないと他のパソコンでは表示できないという問題があります。
パソコンの普及に伴い行政、法律、金融、学術研究、学校、商社などいろいろな分野で使う文字の必要性が生まれ、JIS X0213としてJIS第3水準、第4水準が制定され、さらに古典で使われる旧字体などを登録した拡張漢字(補助漢字)も制定されました。
ISO-2022-jp
ASCIIコードの英数字とJIS X0208の日本語(漢字)を共存できるようにした規格です。ASCIIコードと同じ7ビットコードで日本語も規定します。ただし、このままでは該当コードが英数字か日本語かの判断できなくなりますので、文字コードが切り替わる場所に制御コード(エスケープシーケンス)を挿入し判断します。
「ISO-2022-jp」は「ISO-2022」を日本工業規格(JIS)が拡張規定したものです。「ISO-」となっていますが、「ISO(アイエスオー)国際標準化機構」の規格ではありません。「ISO-2022-jp」を「JISコード」と呼ぶこともあります。Eメールではこの文字コードセットを使っています。
シフトJISコード shift JIScode
JISコードは、ASSICIコードと重複する部分があるため、漢字コードを8ビットで割り当て直したものがシフトJISコードです。1バイト文字と2バイト文字が混在しても判別できるように規定されています。
このコードはマイクロソフト社が開発したものですので、パソコン基本ソフト(OS)のMS-DOSやWindowsで採用されています。このため現在の日本のパソコンでは「シフトJISコード」が標準となります。
Unicode ユニコード
米国企業が中心になって設立したユニコードコンソーシアムが提案した文字コード規定です。英語などアルファベットを使用する言語は1文字を1バイトで表現できますが、日本語や中国語で使う漢字やアラビア語のアラビア文字などは1バイトでは表現できません。
世界各国の文字体系に対応できるように、すべての文字を2バイトで表した文字コード体系です。アルファベットや漢字などを統一的に取り扱うことを目的としています。ただし漢字については字形が似いるものがひとつコードに統一されているため日本語と中国語で問題を生じることがあります。
「Unicode(ユニコード)」には入出力変換方式の違いによりUTF-7,UTF-8,UTF-16の3つがあります。
EUC イーユーシー extended UNIX code
米AT&T社が策定したUNIX用の国際化対応規格です。拡張UNIXコードともいいます。日本語、韓国語、中国語なども定められているマルチバイトの文字コード体系です。サーバーなど基本ソフト(OS)にUNIXを使用している場合に使われます。
「EUC(イーユーシー)」には日本語EUC(EUC-JP)、韓国語EUC(EUC-KR)などがあります。