- ベストアンサー
テキストエディタの標準の文字コードについて
EUC_JP で 例えば「あ」の一文字を保存したファイルを Windows 上で 秀丸などのテキストエディタで、 標準の文字コードを 自動選択にした場合に文字化け して画面に表示されますが、 標準の文字コードを EUC に設定して、開きなおすと 正しく表示されます。 ファイルを開くとき、エディタとOSは、どのような 処理をしているのでしょうか? 何かの パラメタ 付き API を発行して EUC での文字 コードに適したフォント、グリフが選択されて、画面 に表示されているのでしょうか? ( 実際の API 名があるのなら教えてください。 )
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> アプリケーションの標準の文字コードの設定 によって > 表示を変えることが可能となる > (グリフ、フォントの選択等の)仕組みを教えて頂きたいのです。 開くときにUnicodeに変換して内部的には全部Unicodeで扱ってます。
その他の回答 (4)
- trytobe
- ベストアンサー率36% (3457/9591)
Internet Explorer で、エンコードの選択の中に「日本語(自動選択)」があるように、表示しようとしてみたときに、 ブラウザなどのソフトが意図していた文字コードで全部が表示しきれないときに、「もしかしたら、EUC で来てたデータではなく、Shift-JIS で来てるのかも」と検知して、より多くの文字が表示でき、半角文字・全角文字が混ざった行でも、文末の改行コードなどにたどり着くときに1バイトずれていたりしない(文末に唐突に「半角カタカナ」がないと改行できないような、おかしな文末になっていない、など)になるほうを、自動選択しているのです。 そういう自動選択ができないソフトがあれば、そのソフトが要求する文字コード(Unicode に対応する前の、EUC か Shift-JIS に決め打ちしていた、Unix系 なり DOS系なりの環境依存システム)に合わせた出力をして、その時代遅れのソフトに合わせてあげるしか手はありません。
- kenpiro3313
- ベストアンサー率22% (56/254)
文字データがサーバーを経由するならEUC。 PCだけならS-JIS。 1バイト規格と2バイト規格の違いが影響します。 基本的に日本語は26文字しかないアメリカの規格には収まらず、2バイトを利用して、かな・カナ・漢字を表現します。 通信を中継する場合、EUCを利用し、末端でS-JISに変換するのがお決まりです。
- t_ohta
- ベストアンサー率38% (5238/13705)
OSは特別な事はせず、アプリケーションに対してバイナリーデータとしてファイルの内容を渡すだけです。 賢いテキストエディタはファイルの内容をみて、各文字のバイナリーデータからどの文字コードが適切か推測します。 各文字コードで使われるコード番号は、番号の範囲が異なるのでバイナリーデータから推測する事が可能ですが、ダブっている範囲もあるため文字数が少ないと正しく判断出来ない場合があります。 どの文字コードが使われているか判断が付かない場合は、そのアプリケーションの設定で標準とされている文字コードでデータを描画する事に成ります。
補足
回答ありがとうございます。 すみません。質問のポイントがずれていました。 >そのアプリケーションの設定で標準とされている文字コードでデータを描画する 例えば、 Shift_JIS で コード 0xE1A1 の 「癸」で保存したファイルを 標準の文字コードを EUC に設定して、開きなおすと EUC_JP の同じコード 0xE1A1 の 「瓠」で表示されます。 この同じバイナリで、 アプリケーションの標準の文字コードの設定 によって 表示を変えることが可能となる (グリフ、フォントの選択等の)仕組みを教えて頂きたいのです。
日本語Windowsの場合テキストエディタ以外は殆どS-JISを使用しています。 EUCは『2バイトコード』ですが『SIFTコード』が含まれる2バイトコードは S-JISコードと判断しているでしょうね。 おそらくAPIは共通ですね。 *日本語Windows以外は大概EUC文字コード対応です。 国際英語版はXPの頃からEUC文字コードに対応してます。
補足
回答ありがとうございます。 > 開くときにUnicodeに変換して内部的には全部Unicodeで扱ってます。 ということは、画面に表示されている文字データを テキストエディタは、 Unicode としてメモリ上に保持しておいて、 ファイルを閉じるときに、標準の文字コードにコード変換して HDD などの外部記憶装置に保存しているという認識でよろしいので しょうか? 試しに、下の上付き 2 など Shift_JIS に存在しない文字も 3²+4² = 5² エディタの画面上では貼り付けて表示することができて、 保存するときに「 Unicode テキストが含まれていたので...」 のメッセージが出ました。、