码迷,mamicode.com
首页 > 编程语言 > 详细

VisualC++2012 Compiler Warning C4566

时间:2014-07-21 22:32:37      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:unicode   c4566   warning   

现象:


今天写程序突然遇到这样一个警告:


warning C4566: ユニバーサル文字名 ‘\u0642‘ によって表示されている文字は、現在のコード ページ (932) で表示できません


意思是说,Unicode字符‘\u0642‘不能在现在的codepage(932)中 表示。(codepage(932)表示日文编码JIS)


结论:


查了一下微软官方的描述,并不是每一个Unicode字符都能在你当前的ANSI code page中表示,存在有一部分字符肯定表示不了。单字符是可以转成宽字符,反之则不行。


示例:

下面示例中c1,c2编译时都会出C4566,我们应该以宽字符去存储Unicode字符

// Warning_C4566.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
   //Unicode字符以当前ANSI(CodePage932)存入
   char c1 = '\u521B';   // C4566
   char c2 = '\u0642';   // C4566
   char c3 = '\u03a0';   // NO C4566

   //Unicode字符以宽自己存入
   wchar_t c4 = L'\u521B';   // OK
   wchar_t c5 = L'\u0642';   // OK
   wchar_t c6 = L'\u03a0';   // OK
   
   return 0;
}


VisualC++2012 Compiler Warning C4566

标签:unicode   c4566   warning   

原文地址:http://blog.csdn.net/chen_jint/article/details/38022265

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!