問題は、英語版以外の XP では、コンソール アプリと GUI アプリのコード ページが異なることです。たとえば、ポーランド語版でコンソールに次のように記述した場合です。
echo zażółć gęślą jaźń > somefile.txt
そのファイルの内容は次のとおりです。
zaľ˘† g©lĄ ja«ä
それをcmdファイルに入れた場合、これは起こりません。それがこのポーランド語のテキストです。しかし、英語以外の文字のみを使用して名前が付けられたファイルまたはディレクトリを作成すると、それが cmd から実行された場合でも、finger から実行された場合でも、効果は常に意味不明になります。
だから私の質問は、残りのウィンドウが実行されているこの 2 番目のコード ページを取得する方法です。私の場合、この CP は 1250 ですが、この数値を c++ から取得するにはどうすればよいですか?
GetConsoleCP()
GetConsoleOutputCP()
どちらも 852 (これは正しい) を返し、1045GetThreadLocale()
を返します。
しようとするchcp 1045
と、「間違ったコードページ」が表示されます。