1

問題は、英語版以外の 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と、「間違ったコードページ」が表示されます。

4

1 に答える 1

3

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP- このレジストリ キーには、ANSI コード ページ番号 (この場合は 1250 である必要があります) とHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCPOEM コード ページが格納されます。

ああ、GetACPGetOEMCP関数があります。

于 2012-05-22T13:58:23.490 に答える