charset に関する問題は、特に私のプログラミング環境が実稼働環境と異なる場合、プログラミングを行うときに常に頭を悩ませます。端末ツールとして secureCRT を使用しています。Options → Session options → Appearance → Character encoding
これがコンテンツの文字セットと一貫している場合にのみ、コンテンツを適切に表示するように調整できます。しかし、vi を使用して secureCRT で何かを入力/編集/作成すると、複雑になります。
3 つの変数があります。
- Linux サーバーの
$LANG
環境変数 - 作業中のコンピューターの
$LANG
環境変数- WindowsとsecureCRTが実行されています
- secureCRT 設定
Options → Session options → Appearance → Character encoding
これら 3 つの変数が統一されていない場合、vi(vim) に入力した漢字は混乱して表示されます (つまり、A=UTF-8、B=GBK、C=GBK (GBK は中国語))。これは非常に複雑です。vi は、IME (Google 中国語 IME) からのバイトを受け入れます。これらのバイトは、GBK (変数 B) の漢字に対して正しいものです。ただし、secureCRT はこれらのバイトを GBK (変数 C) に従って文字として表示します。私の質問は、なぜそれらが正しく表示されないのですか?
vi(vim) をバイパスするが、同じ A、B、C 変数のセットを使用する場合 (つまり、Windows で GBK ファイルを作成してサーバーにアップロードする場合)、そのファイルを vi (または more/less/cat) すると、すべて文字が正しく表示されます。vi を使用して中国語のコンテンツを作成する場合と、vi を使用してファイルのコンテンツのみを表示する場合の違いは何ですか? IME を使用して vi に入力するとどうなりますか?
この問題は、文字セット/フォントを完全に理解するのに非常に役立つと思います。これに光を当ててくれてありがとう。