`
zxggmail
  • 浏览: 29250 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

VC2008编译器对utf8字符的判断方法有问题

 
阅读更多

在cocos2d-x的测试项目中,有一句

CCLabelTTF *pLable = CCLabelTTF::labelWithString("中国", "Marker Felt", 30)

能正常编译通过,

 

但是如果在"中国"后再个"人"字:

CCLabelTTF *pLable = CCLabelTTF::labelWithString("中国人", "Marker Felt", 30);

编译就报错了:

 

..\labeltest.cpp : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

..\labeltest.cpp(959) : error C2146: 语法错误 : 缺少“)”(在标识符“Marker”的前面)

..\labeltest.cpp(959) : error C2661: “cocos2d::CCLabelTTF::labelWithString”: 没有重载函数接受 1 个参数

..\labeltest.cpp(959) : error C2001: 常量中有换行符

 

 

如果改成"中国人民", 可以正常编译了;

如果单独一个"人"字, 也会报错.

 

文件本身是按无BOM的utf8格式保存的, 编辑器可以正确显示语法高亮, 却不能正常编译, 显然是编译器判断失误了. 

如果转换成有BOM的utf8格式保存, 能通过编译, 但是运行会出错(即编译出的utf8字符串值是不对的).

分享到:
评论

相关推荐

    批量将VC工程相关文件转换为UTF-8编码格式

    2. **可读性**:在ASCII范围内,UTF-8编码与ANSI编码完全一致,这意味着纯英文的代码在转换后不会有任何变化,且仍能被所有系统识别。 3. **跨平台**:UTF-8编码在不同操作系统之间有很好的一致性,减少了跨平台开发...

    VC字符串转换的常用方法

    - 转换时需注意字符编码问题,不同的字符串可能采用不同的编码,如ASCII、UTF-8、GBK等,不正确的编码转换可能导致乱码。 - 非托管字符串(如`char*`)在分配后需要手动释放内存,否则可能导致内存泄漏。 - 使用...

    pcre-8.32.已编译的lib支持UTF8

    已编译的静态lib支持UTF8”,意味着这个库是针对Windows XP环境下的VC6.0(Visual C++ 6.0)编译器编译的,并且已经确认可以在该环境下正确工作,同时具备处理UTF-8编码字符串的能力。UTF-8是一种常见的Unicode编码...

    vc6.0 网络程序测试终端

    综上所述,"VC6.0网络程序测试终端"是一款针对Linux后台的调试工具,它利用VC6.0的Socket功能进行网络通信,同时具备GBK到UTF8的编码转换能力,解决了跨平台中文字符乱码的问题。这样的工具不仅简化了开发者的工作...

    用来处理2013 v120 多字符的,vc-mbcsmfc.exe

    Unicode则是一种包含几乎世界上所有字符的编码标准,通常使用UTF-8作为其编码形式。 3. **VC++的平台工具集(v120)**:这是Visual Studio 2013的编译器和链接器等工具的集合,它们决定了编译时的兼容性和特性。...

    VC6.0++乱码解决

    - **使用Unicode编码**:在项目设置中,可以将项目的源代码编码改为Unicode(UTF-16或UTF-8),这样可以直接在源代码中使用各种语言的字符,无需担心编码冲突。 - **更新或替换字体**:如果发现某些字体在显示中文...

    VC6.0错误指令及解决方法

    本文将详细解析VC6.0中的常见错误及其解决方法,帮助开发者快速定位并解决问题。 ### 1. error C2065: 'xxx': undeclared identifier 此错误意味着编译器在尝试识别变量、函数或其他标识符时未能找到其声明。这...

    vc_mbcsmfc.exe

    标题“vc_mbcsmfc.exe”指的是一个与Visual Studio相关的可执行文件,它主要用于扩展Visual Studio对多字节字符集(MBCS)的支持。在深入讨论这个知识点之前,我们首先要理解什么是MBCS和为什么它在编程,尤其是C++...

    VC 显示单位和特殊符号--修正版

    如果你需要在不同编码之间转换,可以使用`std::wstring_convert`和`std::codecvt_utf8_utf16`等工具。但注意,C++17之后,这些工具已标记为过时,应尽量避免使用,转而采用其他库,如Boost.Locale或ICU库。 7. **...

    iconv 1.9.1 vc8 library

    1. **iconv库介绍**:iconv库最初由GNU项目开发,其主要功能是提供接口处理各种字符编码的转换,如ASCII、UTF-8、GB2312等。这对于跨平台的软件开发尤其重要,因为不同操作系统和语言环境可能支持不同的字符编码标准...

    vc6.0与vs2005的编码区别

    VC6.0采用的是MBCS(Multi-Byte Character Set),也称为DOS或Windows ANSI编码,它是对非ASCII字符的一种编码方式,通过一个或多个字节来表示一个字符。这种编码方式在处理英文字符时较为高效,但在处理非英文字符...

    LibIconv-1.15 适用于VC2017

    本篇将深入探讨LibIconv-1.15版本在Visual Studio 2017 (VC2017)下的使用方法和关键知识点,同时也会涉及C++11标准在低版本编译器及Android平台上的兼容性问题。 首先,LibIconv-1.15是针对不同字符集转换的解决...

    VC开发环境优化文件

    2. **文件编码问题**:VC6.0可能不识别某些非标准的文本编码,尤其是非ASCII字符集的文件。检查文件编码并转换为UTF-8或ASCII格式。 3. **VC6.0组件损坏**:安装过程中可能有部分组件未正确安装或被误删除。可以...

    VC6 Lib PDB 大全

    尽管后来有更新的版本如Visual Studio .NET,但VC6因其小巧、高效和对老代码的良好支持,至今仍被一些开发者所青睐。 4. **解决缺少库的问题**: - 开发过程中,如果遇到缺少特定库的错误,通常是因为项目配置不...

    VC显示单位和符号

    在VC中,处理Unicode编码通常涉及到使用宽字符或UTF-16编码。宽字符在C++中通常用`wchar_t`类型表示,它们可以存储两个字节的数据,足以容纳Unicode字符。对于字符串,你可以使用`L"..."`前缀来创建宽字符字符串,如...

    vc6.0 完整的文本编辑器源码

    6. **编码支持**:现代编辑器需要支持多种字符编码,如ASCII、Unicode、UTF-8等。源码中会有对不同编码的处理和转换代码。 7. **文件操作**:编辑器需要能够打开、保存和另存为文件。源码中会包含文件I/O的相关函数...

    VC++支持中文的正则表达式函数库

    - **编码支持**:由于库专门优化了对中文的支持,因此可能使用了宽字符或者UTF-8编码,确保你的项目设置与之兼容。 - **性能**:尽管库是为VC++定制的,但其性能可能与原生的正则表达式库(如Boost.Regex或std::...

    VC++ String

    - **Unicode**:在Win32中通常使用UTF-16编码,每个字符占用两个字节(对于常用字符而言),这样可以保持与DBCS兼容。 ##### 4. 字符串处理函数的使用 - **传统C风格的字符串处理函数**:如`strlen()`、`strcpy()`...

    ARX C++编程 ARX C++

    - **多字符集支持**:在C++中,特别是在Windows平台下,程序可能需要处理多种字符集(例如ASCII、UTF-8、UNICODE等)。为了简化这一过程,Microsoft Visual Studio提供了一些宏和函数来帮助开发者处理不同字符集之间...

    VC程序\vc++6.0编译出错

    2. **调整文件编码**:确保源文件保存为支持的标准编码格式,如UTF-8。 #### 三、fatal error C1004: unexpected end of file found **问题描述**: 此错误提示通常是由于源文件中的花括号不匹配导致的。 **解决...

Global site tag (gtag.js) - Google Analytics