vc2010 win32 控制台应用程序中文乱码
在 vc2010 上用 win32 控制台程序写些测试代码调用 windows api ,处理错误信息时,发现用 wprintf 输出的错误信息出现了乱码 ???????
。
整个代码的逻辑很简单,如下:
调用 windows api 并判断返回值,如果出错,用 GetLastError() 获取错误号 nLastError ,最后用 FormatMessage 获取错误信息
wchar_t szBuff[nSize+1] = L"";
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
nLastError,
0,
szBuff,
nSize,
NULL)) {
wprintf(L"Format message Failed with %d\n", nLastError);
}
else {
wprintf(L"%d -> %s\n", nLastError, szBuff);
}
但是,输出的错误信息里面却是乱码。
在 http://blog.csdn.net/testcs_dn/article/details/26164025 找到了原因和解决办法,使用 _wsetlocale
设置本地化能让中文正常显示。
#include <local.h>
...
_wsetlocale(LC_ALL, L"chs");
...
以前还没有遇到这个问题,无论是使用多字节还是 unicode 都很正常,不知道什么地方引起的,一个小坑。