首页 > 代码库 > VisualC++2012 Compiler Warning C4566
VisualC++2012 Compiler Warning C4566
现象:
今天写程序突然遇到这样一个警告:
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。