最近在学Charles Petzold的Windows程序设计。这本书不用说,是经典中的经典。其中学到文字与字体这章的时候,遇到一个问题:
他随书的源代码中有这样一句:     static TCHAR     szText[] = TEXT ("\x41\x42\x43\x44\x45 ")
                                 TEXT ("\x61\x62\x63\x64\x65 ")
                 TEXT ("\xC0\xC1\xC2\xC3\xC4\xC5 ")
                                 TEXT ("\xE0\xE1\xE2\xE3\xE4\xE5 ") 
#ifdef UNICODE
                                 TEXT ("\x0390\x0391\x0392\x0393\x0394\x0395 ")
                                 TEXT ("\x03B0\x03B1\x03B2\x03B3\x03B4\x03B5 ")                                 TEXT ("\x0410\x0411\x0412\x0413\x0414\x0415 ")
                                 TEXT ("\x0430\x0431\x0432\x0433\x0434\x0435 ")                                 TEXT ("\x5000\x5001\x5002\x5003\x5004") 
#endif
                                 ;
我运行时出现错误,提示的是:
error C2002: invalid wide-character constant
只有TEXT ("\xC0\xC1\xC2\xC3\xC4\xC5 ") TEXT ("\xE0\xE1\xE2\xE3\xE4\xE5 ")这两行出错,去掉他们后其他的都没事。程序是用UNICODE预定义来编译的,他已经编译好的程序没有出错,能正常用Unicode显示所有的字符(其他如希腊语的符号)。但源代码在中文的Win2000下就不行。我把\xC0换成\x00C0也不行。后来换成了MBCS来编译,就只出现中文(因为系统把两个字符合并成一个来显示),不是正确的符号了。有没有哪个大哥大姐有UNICODE在中文系统下使用的经验,介绍介绍,特别是在中文系统下显示其他语言如韩文的经验,能提供资料也好,谢谢了!

解决方案 »

  1.   

    我认真看了一下UNICODE的资料,其实虽然微软把所有内部的消息用Unicode代码处理
    过,但是在文字显示的时候还是用本地的DBCS,对于中文系统来讲就只用了DBCS和
    7位的ASCII码(0-127)。而第八位ASCII码(128-255)是参照地区代码页的。也就是说
    不同的国家代码页有不同的字符显示。所有我们看不到A上有一点的字符。但对我的问题还是没有帮助,因为\xC0现在的问题是编译出错。而用\x00C0照样出错。
    按道理其他的如\x0430显示都没有问题,\x00C0也不会有问题呀。奇怪!还是等待高手来解决吧!
      

  2.   

    我认真看了一下UNICODE的资料,其实虽然微软把所有内部的消息用Unicode代码处理
    过,但是在文字显示的时候还是用本地的DBCS,对于中文系统来讲就只用了DBCS和
    7位的ASCII码(0-127)。而第八位ASCII码(128-255)是参照地区代码页的。也就是说
    不同的国家代码页有不同的字符显示。所有我们看不到A上有一点的字符。但对我的问题还是没有帮助,因为\xC0现在的问题是编译出错。而用\x00C0照样出错。
    按道理其他的如\x0430显示都没有问题,\x00C0也不会有问题呀。奇怪!还是等待高手来解决吧!