积极答复者
输出汉字失败,怎么回事?

问题
答案
-
#include <stdio.h>
#include <locale.h>
int wmain(int argc, wchar_t *argv[])
{
setlocale (LC_ALL, "");
wchar_t *pszTmp = L"中文";
wprintf(L"%s\n", pszTmp);
system("pause");return 0;
}控制台程序的默认区域设置的问题, 需要在代码里面设置区域, 就可以让wprintf正常输出中文了.
通常习惯还应该把项目属性设置成使用Unicode并且使用wmain()入口函数.
- 已编辑 唬紧掏 2012年2月29日 5:22
- 已建议为答案 SplendourGModerator 2012年2月29日 8:36
- 已标记为答案 仙人球球 2012年3月1日 5:47
-
改进了代码 添加了头文件locale.h 添加函数setlocale(ALL,"")
代码如下:
#include <stdio.h> #include<stdlib.h> #include<locale.h> int main( void ) { wchar_t *wstring = L"哈哈"; setlocale(LC_ALL,""); wprintf(L"Strings in field (2):%ls\n",wstring); system("pause"); return 0; }
vs2010下可以编译通过了。
注:通过这个问题我又发现其实不管是否使用wchar类型、wprintf、wscanf等函数也能够正常输入输出汉字。另外在项目→属性→常规下 字符集 使用多字符集也是一种方法
煮酒论英雄
- 已标记为答案 仙人球球 2012年3月1日 9:14
全部回复
-
#include <stdio.h>
#include <locale.h>
int wmain(int argc, wchar_t *argv[])
{
setlocale (LC_ALL, "");
wchar_t *pszTmp = L"中文";
wprintf(L"%s\n", pszTmp);
system("pause");return 0;
}控制台程序的默认区域设置的问题, 需要在代码里面设置区域, 就可以让wprintf正常输出中文了.
通常习惯还应该把项目属性设置成使用Unicode并且使用wmain()入口函数.
- 已编辑 唬紧掏 2012年2月29日 5:22
- 已建议为答案 SplendourGModerator 2012年2月29日 8:36
- 已标记为答案 仙人球球 2012年3月1日 5:47
-
改进了代码 添加了头文件locale.h 添加函数setlocale(ALL,"")
代码如下:
#include <stdio.h> #include<stdlib.h> #include<locale.h> int main( void ) { wchar_t *wstring = L"哈哈"; setlocale(LC_ALL,""); wprintf(L"Strings in field (2):%ls\n",wstring); system("pause"); return 0; }
vs2010下可以编译通过了。
注:通过这个问题我又发现其实不管是否使用wchar类型、wprintf、wscanf等函数也能够正常输入输出汉字。另外在项目→属性→常规下 字符集 使用多字符集也是一种方法
煮酒论英雄
- 已标记为答案 仙人球球 2012年3月1日 9:14