Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2023年07月01日] [更新 204年01月01日] Delphi 一般・その他 [未分類 - OS の操作等]
   
環境依存文字と Unicode
動作確認等 Windows 10 ビルド 19043 Pro 64 bit
[整理番号 - 1910]







環境依存文字と Unicode


Microsoft IME のかな漢字変換で文字を入力する際,変換候補の文字の右側に [環境依存] のコメントが表示されることかあります.本ページは,この環境依存文字と,文字化けなどの発生原因に関する参考記事です.



環境依存文字を意識しなければならない場面はそう多くはありません.
現在,パソコンのアプリで使用するテキスト (文字) はほとんど Unicode (ユニコード) という文字符号化方式を使用していますが,通常は,文字符号化方式のことを意識する必要はありません.



[備考]
Unicode の普及の程度を示す統計があります.
それは,Web テクノロジーに関する調査を行っている W3Techs による発表です.2023年12月の発表によると,Web サイトで使用されている文字コードは,Unicode の UTF-8 が 98.1%, Shift_JIS は 0.3% となっています.





01_環境に依存しない文字と環境依存文字


以下のリンクのページに,JIS X 0208 の区点コードの文字があります.それらの文字と ASCII 文字は,環境に依存しない文字です.それ以外は,全て環境依存の文字です.



環境に依存しない文字は,日本語を扱うアプリではあれば,コンピュータの機種や OS に関係なく,文字符号化方式にも関係なく全て使用できます.
環境依存の文字は,文字符号化方式によって使用可能な文字が違います.文字符号化方式が 6Unicode の UTF-8 または UTF-16 の場合は,Unicode に登録されている文字が使用できます.UTF-8, UTF-16 で実際に使用可能な文字は,フォントファイルに収録されている文字です.



[備考]
環境に依存しない文字しか扱わない,あるいは,環境に依存しない文字しか扱えない環境では,[環境依存] の文字は正常に処理できません.





02_[ 環境依存 ] 文字の確認方法


環境依存のチェックは,Microsoft IME の場合,変換時の変換候補リストで確認できますが,入力して確定した文字や,他からコピーして貼り付けた文字は,下図の操作で確認できます.
下図は,Microsoft IME で半角カタカナの「カ」を確認する例です.

ただし,全ての環境依存文字がこの方法で確認できるわけではありません.例えば,異体字セレクタを使用している文字は,この方法では確認できません.




図1
[環境依存] の確認方法

  • 調べる文字を選択
  • マウスの右ボタンをクリック
  • [再変換 (R)] を選択

  • または,
    文字を選択して [変換] キーを押下

図2
対象の文字のコメントを確認
  • 全角カタカナに (非環境依存文字) 変更できる
  • 同じ手順で,環境依存文字である
    髙 﨑 黑 などの異体字も
    高 崎 黒 などに変更可能

[備考 1]
半角カタカナ (半角カナ) は,日本語にはなかった文字です.半角カタカナは,コンピュータの性能が低く,漢字が使用できなった時代,1 バイトだけで日本語を扱うために考えられ,1960年代に作られた文字です.これは,当時としては画期的なことでした.データベースの氏名や物品名などの日本語のデータとして使われてきました.
パソコンを端末として使用することによって,ホストコンピュータのデータベースの,半角カタカナのデータを利用できました.現在では,古いデータベースのデータを扱う場合などを除いて,半角カタカナを使用する必然性は全くありません.

一般的な文書では,英数字,記号類には半角文字を使用します.カタカナは全角を使用します.出版されている書籍類では半角カタカナは使用されていません.
現在は,インターネットメール (電子メール) に Unicode の UTF-8 も使用でき,半角カタカナも使用できますが,かっては,文書としての日本語のメールでは,半角カタカナは使用できないようになっていました.


[備考 2]
「半角」というのは,漢字の半分の幅で表示されるという意味と思われますが,プロポーショナルフォントを使用した場合は,半角文字と全角文字の区別がつきにくい表示になります.漢字の半分の幅になるのは等幅フォントを使用した場合です.
当サイトでは,記事本文に等幅フォントを使用していますが,一般的な文書ではプロポーショナルフォントを使用します.





03_文字符号化方式の違いによる文字化け


アプリで使用可能な文字は,そのアプリが使用する文字符号化方式によって決まります.その文字符号化方式にない文字を使用すると,その文字は文字化けします.

文字化けは,テキストを,フェイルを使用して他のアプリで利用したり ,他のコンピュータのテキストを,ファイル,データ通信,ウエブページなどを介して相互利用する場合に問題となります.その場合の文字化けは,文字符号化方式の違いによって発生します.

同じ文字でも,文字符号化方式が異なると文字コードが異なります.文字コードが異なれば,それは別の文字を意味します.この文字コードの違いを意識する必要はほとんどありません.多くのアプリでは,エンコードという処理で,文字コードを自動に変換してくれるようになっています.
受け側の文字符号化方式にない文字は,エンコードによる文字コードの変換はできません.変わりに「?」あるいは「�」などの文字に変換します.これが文字化けです.どんな文字になるかは文字符号化方式によります.

テキストの相互利用では,相手側で使用可能な文字を知ることが必要です.
非環境依存文字である ASCII 文字と JIS X 0208 規格の文字は,日本語の文字符号化方式であれば用可能な文字です.したがって,環境依存文字を使用しなければ,文字符号化方式の違いによる文字化けは発生しません.

もし,エンコードが行われないか,エンコードか適切でない場合は,テキスト全体が文字化けします.






04_インターネットメール ( 電子メール )


日本語のインターネットメールでは,文字符号化方式として ISO-2022-JP が使用されてきました.この方式は,送信側も受信側も ISO-2022-JP で規定ている JIS コードを使用します.送信側も受信側も文字符号化方式が同じですから,環境依存文字を使用しなければ文字化けしません.

現在,Windows などの OS は Unicode 化されています.この方式のメールソフトでは,Unicode を JIS コードにエンコードして送信します.受信側では JIS コードをエンコードして Unicode にしています.
したがって,文章の入力時は環境依存文字も入力できます.環境依存文字であるかは (JIS コードとして使用可能な文字であるかは),エンコードの処理が行われる文章の保存時または文章の送信時に決まります.


今では,インターネットメールでも Unicode の文字符号化方式 UTF-8 を使用するのが一般的になってきています.UTF-8 であれば,環境依存文字も使用できます.

UTF-8 のメールを受信して文字化けした場合,多くのメールソフトは,表示の文字符号化方式を変更すれば文字化けなしで表示できます.設定項目は,[エンコード] [文字コード] などです.自動で,あるいは設定によって,文字符号化方式を検出して処理するメールソフトもあります.



[備考]
Windows 10 のシステムの文字符号化方式は Unicode の UTF-16 です.UTF-8 のメールの送受信では UTF-16 と UTF-8 のエンコード処理をしています.
UTF-8 と UTF-16 は Unicode ですから,使用可能な文字は同じです.したがって,エンコードの処理をしても,文字符号化方式の違いによる文字化けは発生しません.





05_使用可能な Unicode の文字


環境依存の Unicode の文字の場合,その文字の字形が正常に表示されるかは,システムにインストールさているフォントと,文字の描画用に設定するフォントによります.

Windows では,文字の表示に使用するフォントを指定します.これは,フォントファイルを指定することと同じです.そのフォントファイルから文字の描画データ (フォントデータ) を読み出して,図形としての文字を描画します.
フォントファイルは,国や地域別に用意されていますが,欧文のフォントファイルにも日本語の文字が収録されています.日本語用のフォントファイルには,中国語などの文字も収録されています.

2022年9月13日リリースの Unicode 15.0.0 にば,149,186 文字が登録されています.一方,Windows 10 で収録文字数が多いとされる游ゴシックでも収録文字数は 24,395 字です.メイリオの収録文字数は 25,059 字,MS P明朝に収録されている文字数は 19,399 字です.
したがって,1 つのフォントファイルだけで Unicode に登録されている文字の全てが使用できるわけではありません.フォントファイルに収録されていない文字は,多くの場合,フォントリンクの機能によって,代替えフォントを使用した表示が行われます.



[備考]
ウェブページにおけるテキスト入力の場合,テキストを受け取って処理するのは,その入力部分に関係するウェブサーバ (コンピュータ) です.Google での検索ならば Google の検索処理用のサーバ,Twitter への書き込みであれば Twitter のサーバです.官公庁,地方自治体,企業,組織のウェブページであれば,それらのウェブサーバです.

それらのサーバでは,環境依存の文字を処理できないか,入力フォームなどで意図的に環境依存文字の入力を制限している場合があります.この制限によって,一般的なフォントに収録されている漢字や記号,絵文字だけとして,難解な漢字の使用を抑止できます.





06_Unicode の代替えフォントによる文字の表示


Unicode に登録されている文字で,実際に使用可能な文字は,使用するフォントファイルによつて異なりますが,Unicode には.フォントリンクによる代替代替えフォントを使用する機能があります.描画用に指定したフォントファイルにない文字は,フォントリンクによる機能によって,代替フォント,つまり,別のフォントを使用して表示します.この代替えフォントは,システムが決めています.Microsoft Word やワードパッドであれば,選択した文字のフォント名で確認できます.

以下のリンクの文字は,Unicode に登録されている記号類と絵文字の一覧です.この表は,フォントに游ゴシックを指定しています.



上の表と同じ領域の文字の内,游ゴシックフォントファイルに収録されている文字だけを表示したのが以下のリンクの表です.これは,もし,フォントリンクという機能がない場合の結果ということになります.
違いは明らかです.フォントリンクによる代替えフォント表示が行われない場合,表示可能な文字は限れてしまいます.



以下の文字でこのこのことを再確認してみます.


   日本語𠬀𠬁𠬂

新規にメモ帳を起動して,[書式] [フォント] で,使用するフォントをゴシック系にします.上の文字をコピーして貼り付けたら [ファイル] [名前を付けて保存] で保存します.結果は下図のようになります.

この図では,フォントに「游ゴシック」を使用しています.「游ゴシック」には 2 行目の 3 文字はありません.メモ帳では,同じ文書内でフォントや書式を変更することができませんが,こり機能によって栄体 (日本の明朝体相当) で表示されています.




図3
システムの代替えフォント表示

これらの文字を Shift_JIS で保存してみます.メモ帳では,[名前を付けて保存] の時に [文字コード] を [ANSI] にすると Shift_JIS での保存になります.結果は下図のようになります.Shift_JIS にない文字は文字化けします.

Windows 10 は Unicode 化されています.したがって,Shift_JIS で保存した後も Shift_JIS にない文字が入力できます.上書き保存の時に Shift_JIS へのエンコード処理が行われます.それ結果,ShiftJIS にない文字は文字化けします.




図4
確認ダイアログ

  • Shift_JIS にない文字は,正常に表示できなくなる

図5
Shift_JIS で保存した結果

フォントリンクによる代替えフォント使用の機能は,システムが Unicode の環境であればウエブブラウザでも機能します.ただし,ウェブページの charset (文字コードの指定) が UTF-8 の時に限ります.数値文字参照を使用して文字を表示する場合は,charset の設定に関係なく代替えフォントにる表示の機能が働きます.

フォントリンクによる代替えフォント使用の機能は,全ての OS とフォントで同じように機能するとは限りません.フォントリンクが設定されないフォントもあります.
下図は,メモ帳を新規に起動して,フォントを IPAmj明朝または源ノ角ゴシックにた場合です.これらは,Windows には標準でインストールされていないフォントです.IPAmj明朝フォントには,これらの文字が全て収録されていますが,源ノ角ゴシックには 2 行目の文字は収録されていません.




図6
IPAmj明朝フォントの場合

  • 全て IPAmj明朝フォントを使用して表示している
  • IPAmj明朝フォントにはこれらの文字が全てある

図7
源ノ角ゴシックのフォントの場合
  • 源ノ角ゴシックフォントを使用して表示している
  • 源ノ角ゴシックフォントには,2 行目の文字がない

上の「四角にバツ」の図形は,使用しているフォントファイルに,そのコードポイントの文字がない時の表示です.このコードポイントの文字が収録されているフォントに変更すれば元の文字を表示することができます.また,Windows に標準でインストールされている「MS Pゴシック」などに変更すれば,代替えフォントによる表示になります.

その上の Shift_JIS による文字化けは,文字符号化方式の違いによる文字化けです.表示に使用するフォントを変更しても元の文字にはなりません.文字化けした状態で文字符号化方式を変更しても元には戻りません.



[備考 1]
筆者の環境では,上記の文字に,代替えフォントとして SimSun-ExtB が使用されます.このフォントには,繁体字中国語,簡体字中国語,韓国の漢字を含めて 60,418 字が収録されています.このフォントの書体は,栄体 (日本の明朝体相当) です.

[備考 2]
IPAmj明朝フォントと 源ノ角ゴシックフォントは,どちらも Windows 10 には標準でインストールされていませんが,無料で入手することができます.
どちらも 約 6 万字が収録されていますが,収録されている文字には違いがあります.IPAmj明朝フォントは,主に日本の人名,地名,固有名とそれらの異体字などの漢字を収録してています.源ノ角ゴシックフォントは,日本,中国,韓国で共通に使用されている漢字を中心に収録しています.