2025/08/25

   .国際化サポート。

      内部エラーメッセージは日本語環境以外では英語です。
      この項の議論はファイルのエンコーディングとその画面表示についてです。

      日本語については"日本語入力、コード変換" を参照。

      0x80<-->0xff を使用するSBCS言語ではLinuxコンソール版の場合
      罫線文字にならないように "OPT LINECH OFF"としてください。(1度コマンド入力すればOK)

      (注)ファイル名についてはWindowsのシステムコードページに対して変換不能になる
          可能性があるので使用しないほうが良いでしょう。

      Windowsでシステムの言語設定と異なる言語を使用するには、
        コンソール版はDOS窓のコードページ変更が必要です。
        ドイツ語などヨーロッパ言語の特殊文字(A-umlautなど)入力は
        "chcp 28591" あるいは "chcp 1252" と設定します。
        ともにISO-8859-1 で、1252 は 0x80-0x9fも割り当てあり。

        GUI版(wxe) では /C パラメータで 文字セットを指定て立ち上げます。ex) /C1252。
        そして、Setup ダイアログの文字セットを Other から選択指定してください。
        ISO-8859-1の場合は文字セットはANSIを選択してください。

        前提として、Windowsコントロールパネルで言語の追加と、言語バーでの言語選択の切り替えも必要となります。

      Linuxでは
        コンソール版はDOS窓(gnome-terminalなど)のコードページ設定が必要です。
        DOS窓の文字セット設定とLANG環境変数のUTF8有無は一致させてください。
        違っていると正しく表示されません。
        例えば LANG が UTF8 のとき gnome-terminalの文字セットが各国語の場合"?"入力になります。
        LANG が UTF8 でないとき gnome-terminalの文字セットが UTF8 のとき画面が乱れます。

        日本語キーボードからドイツ語などヨーロッパ言語の特殊文字(A-umlautなど)入力は
        キーボードマップの変更が必要です。
        SCIMの設定をするか DOS窓から"setxkbmap de"などとします。
        SCIM 設定は FC5 では システム->設定->個人設定->SCIM設定です。

        gxe/wxeの場合、フォントの選択によってはLigatureが発生します。
        Ligature とは 例えば fi, ff など隣接する文字の組み合わせによっては2文字を1文字表示にすることです。
        SetupダイアログのLigatureチェックボックスをOffにしておけば分離したまま表示します。
        Ligature を On にすると。カーソル表示位置と文字とが不一致になりますが
        xe では カーソル位置の表示文字はバイト位置の文字を表示します。
        "OPT LIGATURE" コマンド ないしは LIG コマンド(A+";" キー)も使用できます。
          但し、コンソール版はUTF8ファイルのみが対象です。
          また、バイナリーモードで開いた時はリガチャー表示は行われません。
        言語によってはLigatureしないと意味がないそうで結合文字との組み合わせを試してください。
        結合文字の表示方法設定は "OPT UNICOMB" コマンドないしは CMB コマンド(A+":" キー)。

      Alt+u キー(効かない場合はUTF SWKBDコマンド)はキーボード入力の扱いを
      UTF8<-->各国語 切り替えます。
      UTF8文字の扱いはUTF8サポートを参照。

      -----------------------------------------------------------------------

      以下は日本語環境で簡体中国語(GB18030)を表示する方法です
        GB18030の4桁DBCS, EUC の 3バイト補助漢字はタブパディング文字つき表示になります。
        パディング文字は TAB コマンドで表示ON/OFF切り替えられます。
        IMEが使えない場合はHex入力モード(C+F11でトグル)で入力できます。

	  Windows の場合
        コンソール版(xe)はコマンドプロンプトのプロパティを設定します。 chcp 54936。
        GUI版(wxe) では コードページパラメータを指定します。 wxe /c54936。
        Setup ダイアログの CharSet で ANSIか Others で GB2312 を設定します。
        GB18030 は GB2312 の拡張ですが GB2312 で4バイトDBCSもOKです。
        FontStyleの変更も必要になるかもしれません。
        GB18030 以外では下記 "Windows CodePage & Font" と
        コマンドラインパラメータ "-C" を参照

      Linuxの場合、
        コンソール版(xe)は -Czh_CN.GB18030 パラメータを指定してください。
        "setlocale failed" が出る場合は locale-gen してください。
        sudo locale-gen "zh_CN.GB18030"
        terminal emulater の設定でフォントも漢字を表示できるものを選んでください

        GUI版(gxe)でも -Czh_CN.GB18030 パラメータを指定してください。
        同様に"setlocale failed" が出る場合は locale-gen してください。
        また、Setupメニュー、"Font Change"ボタンから漢字を表示できるフォントを
        選んでください

      Windows CodePage & Font

           Charsetはwingdi.hに以下の定義があります。
                #define ANSI_CHARSET            0
                #define DEFAULT_CHARSET         1
                #define SYMBOL_CHARSET          2
                #define SHIFTJIS_CHARSET        128
                #define HANGEUL_CHARSET         129
                #define HANGUL_CHARSET          129
                #define GB2312_CHARSET          134
                #define CHINESEBIG5_CHARSET     136
                #define OEM_CHARSET             255

                #define JOHAB_CHARSET           130
                #define HEBREW_CHARSET          177
                #define ARABIC_CHARSET          178
                #define GREEK_CHARSET           161
                #define TURKISH_CHARSET         162
                #define VIETNAMESE_CHARSET      163
                #define THAI_CHARSET            222
                #define EASTEUROPE_CHARSET      238
                #define RUSSIAN_CHARSET         204

                #define MAC_CHARSET             77
                #define BALTIC_CHARSET          186

      コマンドラインパラメータ。
        -C   :環境から決定されるもの以外を使用したいとき指定する。

              Windosw : Codepage。   ex) -c949  -cGerman_Germany.1252
                利用可能な値はxcv コマンドで見て下さい("xcv -List)
                Windowsコンソール版ではDOS窓のプロパティーでフォントが限定されるので
                指定変更すると文字が見えなくなるかもしれません。
                wxeではSetupダイアログでCharsetも合わせる必要があります。


              Linux  :Charset        ex) -cGBK, -ciso88591 -czh_CN.GB18030
                利用可能な値はxcv コマンドか iconv --listでListup。

                省略値はLANG環境変数がUTF8でない時はそこに指定された文字セットを使用します。
               例えばLANG="de_DE.iso8859"なら iso88591
                LANGがUTF8のときは以下のように国コードから決めています。左から使用可能なものを選択します
                    zh_CN :GB18030,GBK,GB2312
                    ko_KR :UHC,EUC-KR
                    ja_JP :eucjp

                但し全画面コンソールの場合はiconvがサポートしていれば "ISO88591",
                いなければ "C" とします。

                これ以外の国の場合は国コードだけでsetlcaleしnl_langinfoで求めます。
                このsetlocaleが失敗したらiso88591を使います。

                Axe では ICU を使用します
                    zh_CN :"GB18030","GBK","GB2312"
                    ko_KR :"korean","EUC-KR"
                    ja_JP :"EUC-JP"
                    zh_TW :"Big5-HKSCS","Big5"
                    その他:"ISO-8859-1"

                gxeではGTKからの入力はutf8です、gxeはこの指定のCharsetにiconv変換し、
                表示もこのCharserからutf8変換します。
                xeコンソール版では入力はターミナルエミュレータが変換したものを受け取ります。
                xeはターミナルエミュレータのCharsetをsetlocale(LANG環境変数)で検知します。
                (それがUTF8の場合別の方法でロケールコードを判定します。)
                xeはsetlocaleのCharsetからこの指定のCharsetに変換します。
                表示もこのCharserからucs変換しncurseswで出力します。
                例。"あ" は EUC-JPでは 0xa4a2 で EUC-KR では 0xaaa2 です
                    IME窓で"a"キー,Enterキーを押した場合。

                                           IMEからの入力       表示
                   ----------------------  ----------------    ------
                   EUC-JP.UTF8 + -cEUC-KR  aaa2("A" by KR)     "あ"
                   EUC-JP      + -cEUC-KR  a4a2("A" by JP)     "xx"

                   "xx"はハングル文字(SJISでは表示できません),発音は "?k"らしい。
                   (xeコンソール版では空白で表示されることもあります。)

        -Nm  : A+u でUTF8入力モード(コマンド行が =u=> を表示)のとき
               (UTF8エンコーディングでない) ロケールコードファイルに
               UTF8入力をロケールコードマルチバイトに変換せずにUTF8コードをセットする