int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "我";
char *p = str;
while (*p)
{
printf("%d  ",*p);
p++;
}

上面代码在中文Windows xp 显示为 -50 -46
而在英文的Windows server 2003上显示 -89 -38
我查了下汉字“我”的GB编码为4650,这说明中文 xp是对应的,而英文2003 server咋出来了-89 -38呢

解决方案 »

  1.   

    不懂,
    是不是跟UNICODE有关
      

  2.   

    //我 gb编码
    CED2 //我 windows下的utf16
    1162
      

  3.   

    还有一点楼主可以关注一下,你保存文件的时候,用的是什么编码
    如果用utf-8与ansi(默认),那也是不一样的
      

  4.   

    和字符编码是使用多字节还是Unicode是没有关系的。应该是Windows server2003下转换错了。“我”这个汉子的硬编码就是4650。
    另外我在Windows Server2003下(公司的开发机上英文版)测试了一下,输出就是50 46,而不是89 38
      

  5.   

    没有错的 我后来发现了 89 38是big5编码
    因为那个英文windows server 2003没有gb的中文字符集,只有big5的字符集
    应该是这个原因吧
      

  6.   

    详见:http://blog.sina.com.cn/s/blog_4bc281770100iakl.html文章里有描述如何设置VC,来处理不同字符集的方法