を助け願っています。
各文字が1バイトだけでエンコードされたファイルに保存されたプログラムコードのGUIテキストエディタでは、コードページWindows-1252が西ヨーロッパと北米の国で使用されます。
コンソールアプリケーションの実行時に開いたコンソールウィンドウでは、西ヨーロッパ諸国のOEM 850と北米諸国のOEM 437にあるOEMコードページが使用されます。
ÄÖÜäöüß
西ヨーロッパと北米の国では少なくとも実行時に、コンソールウィンドウに文字が表示されるように、異なるバイト値をコードで記述する必要があります。
Character Windows-1252 OEM 850
Ä \xC4 \x8E
Ö \xD6 \x99
Ü \xDC \x9A
ä \xE4 \x84
ö \xF6 \x94
ü \xF1 \x8C
ß \xDF \xE1
コンソールウィンドウにデフォルトで使用されるコードページは、コマンドプロンプトウィンドウを開いて見て、アクティブコードページを表示両方chcp
(変更コードページ)またはmode
のいずれかを実行することができます。
ユーザーアカウントのコンピュータ上のGUIアプリケーションおよびコンソールアプリケーションの既定のコードページは、このユーザーアカウントのWindows地域および言語設定によって異なります。
方が良い文字エンコーディングを理解するために読むべきいくつかのWebページ
:
プログラマは、コンパイルされた実行可能ファイルによって出力された文字列にASCII以外の文字を書き込むべきではありません。なぜなら、実行可能な文字のバイナリ表現(バイト)を作成する際にコンパイラがどのコードページを使用するかによって異なります。文字列が出力される前に、アプリケーションの実行中のアクティブなコードページがわかっているか、またはアプリケーションによって定義されている場合は、16進表記を使用する方がよいでしょう。
実行可能ファイルにUnicodeで文字列を格納し、文字列を出力する前に出力ハンドルのエンコーディングを判断し、文字列が出力ハンドルに書き込まれる前に各Unicode文字列を出力ハンドルのエンコーディングに変換することもできます。
もちろん、使用される出力フォントによって、実行可能ファイル内の文字列のバイトが最終的に実際に画面に表示される方法に依存します。
この結果、コンパイラの警告が表示され、 '' y "'のみが出力されます。 UTF16リトルエンディアンでは、文字列 ''の2番目のバイトはゼロです。 ANSIとUnicodeを混在させることはできません。 –