2010-09-13 68 views
0

我有一定的库(IBM的WebSphere MQ)我使用的,与被假设返回一个远程服务器字符集的API。的Windows活动代码页

一些调试后,它好像这个函数调用的返回值返回我的机器的活动代码页。我通过查看函数调用的返回值以及在命令行中运行chcp的结果看到了这一点 - 两个都返回了862.当我将控制面板 - >区域和语言选项 - >高级选项卡中的语言更改为其他内容,这两个值再次改变,这证实了我的怀疑。

我的问题是,什么是值chcp回报? Win32 API获取/设置它?它与场所有什么关系? (试图在使用std::locale::global的C++应用程序中更改全局区域设置显然没有影响)。

+0

另请参阅[对所有内容进行排序](http://blogs.msdn.com/b/michkap/)了解大量背景知识。 – MSalters 2010-09-13 09:50:44

回答

2

CHCP返回OEM代码页(OEMCP)。 API是Get/SetConsoleCP。

您可以设置C++语言环境“.OCP”来匹配这个区域。

0

语言环境大多识别语言,并考虑到历史上有没有这么多的代码页(许多语言字母从26拉丁语差别不是那么很大),几种语言可以被‘映射’到相同的代码页。我记得,有没有直接的converstion功能,但我与统计方法使它:

  • 对于我收集这些语言的话,我可以从系统获取(LOCALE_SMONTHNAME1..LOCALE_SMONTHNAME12,LOCALE_SNATIVELANGNAME等),任何给定的语言环境以Unicode

  • 我叫WideCharToMultiByte函数为每串试图将它们转换为将此代码页一个字节编码 调用WideCharToMultiByte(代码页CP_ACP或WC_NO_BEST_FIT_CHARS,...,@DefChar,@DefUsed);

    如果被拆除的过程中设置,这基本上意味着,这个语言是不是与此代码页兼容。