现在的位置: 首页 > 综合 > 正文

控制台输出中文

2013年08月06日 ⁄ 综合 ⁄ 共 655字 ⁄ 字号 评论关闭

{

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");

 

抱歉!评论已关闭.