控制台输出中文
2009-07-14 09:47
148 查看
{
char* paName = "测试中";
wchar_t* pwName = L"测试中";
printf(paName); //输出为:测试中
wprintf((wchar_t*)paName); //输出为:空
printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:空
}
如果将程序改写如下,则输出的结果就不一样了
{
char* paName = "测试中";
wchar_t* pwName = L"测试中";
setlocale(LC_ALL, "chs");
printf(paName); //输出为:测试
wprintf((wchar_t*)paName); //输出为:空
printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:测试
}
从上面两个代码片断可以看出:setlocale()对printf()没有影响,同时对char*的字符串也没有影响。唯一受到影响的是wprintf()这个函数了。我通过调试器查看了paName和pwName的字符,他们分别是:
paName :b2e2 cad4 d6d0 …… 应该是CHS编码(也就是代码页936)
wcout.imbue(local("chs");
char* paName = "测试中";
wchar_t* pwName = L"测试中";
printf(paName); //输出为:测试中
wprintf((wchar_t*)paName); //输出为:空
printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:空
}
如果将程序改写如下,则输出的结果就不一样了
{
char* paName = "测试中";
wchar_t* pwName = L"测试中";
setlocale(LC_ALL, "chs");
printf(paName); //输出为:测试
wprintf((wchar_t*)paName); //输出为:空
printf((char*)pwName); //输出为:乱码
wprintf(pwName); //输出为:测试
}
从上面两个代码片断可以看出:setlocale()对printf()没有影响,同时对char*的字符串也没有影响。唯一受到影响的是wprintf()这个函数了。我通过调试器查看了paName和pwName的字符,他们分别是:
paName :b2e2 cad4 d6d0 …… 应该是CHS编码(也就是代码页936)
wcout.imbue(local("chs");
相关文章推荐
- IDEA开发时,控制台输出中文乱码解决方法
- 【gradle】 使用 gradle 在控制台输出中文乱码解决
- MyEclipse或者Eclipse控制台(Console)中的中文输出乱码问题
- MyEclipse或者Eclipse控制台(Console)中的中文输出乱码问题
- 向控制台输出unicode中文字符
- SecureCRT控制台输出中文乱码问题
- [置顶] Xcode控制台输出json数据乱码转为中文
- Linux下Tomcat控制台输出及日志中文乱码问题的解决
- FlashBuilder 控制台输出中文乱码处理
- Android Studio中Java控制台输出中文乱码
- 使用WebLogic时控制台输出中文乱码解决方法
- IntelliJ IDEA控制台输出中文乱码问题解决
- python 控制台输出中文乱码问题
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
- ANT控制台输出中文乱码的解决方法
- Eclipse-运行node时候控制台输出的中文乱码解决
- ANT控制台输出中文乱码的解决方法
- IOS开发——Xcode控制台输出中文
- Sublime Text3中编译运行JAVA控制台中文GBK编码无法输出的问题
- Java笔记5:解决MyEclipse控制台输入中文乱码输出问题(Eclipse也可以用)