utf8转换显示及编译问题

环境: win7 64位 vs2012 Cocos2dx 3.0rc1

模拟器 显示没有问题 编译android时 出现了问题

-------------------------------------------分割线-----------------------------------------------

忙了一下午,查了N多资料 总算是解决了, 模拟器运行正常,android真机调试正常,解决方法:

1.首先需要把字符串转换成UTF8(代码如下):

 void Tools::WStrToUTF8(std::string& dest, const wstring& src){
    dest.clear();
    for (size_t i = 0; i < src.size(); i++){
        wchar_t w = src*;
        if (w <= 0x7f){
            dest.push_back((char)w);
        }else if (w <= 0x7ff){
            dest.push_back(0xc0 | ((w >> 6)& 0x1f));
            dest.push_back(0x80| (w & 0x3f));
        }else if (w <= 0xffff){
            dest.push_back(0xe0 | ((w >> 12)& 0x0f));
            dest.push_back(0x80| ((w >> 6) & 0x3f));
            dest.push_back(0x80| (w & 0x3f));
        }else if (sizeof(wchar_t) > 2 && w <= 0x10ffff){
            dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation
            dest.push_back(0x80| ((w >> 12) & 0x3f));
            dest.push_back(0x80| ((w >> 6) & 0x3f));
            dest.push_back(0x80| (w & 0x3f));
        }else{
                dest.push_back('?');
        }
    }
}

 string Tools::FontToUTF8(const std::wstring& str){
    string result;
    WStrToUTF8(result, str);
    return result;
}


```





2.声明一个lable:

    auto label4 = Label::create(Tools::FontToUTF8(L"我是一个粉刷匠,粉刷本领强,"),Tools::FontToUTF8(L"FZZYJW_1.TTF"),30, Size::ZERO,TextHAlignment::LEFT,TextVAlignment::TOP);
        
    label4->setDimensions(300,0);   // 设置宽高(ps:300为绘制宽度,后面一个参数为高度,0为时貌似为自适应 我是这样理解的!)

    label4->setColor(Color3B(245,199,34));   // 设置颜色

    label4->setPosition(Point(400,300));  //设置坐标

    this->addChild(label4,2); 


```




注意:字体文件千万不能使用中文命名,  大坑!

------------------------------------分割线 终于搞定 希望对其他人有帮助  回家洗洗睡了--------------------------------------------------------
*

搬个板凳 :14:

提示很明显啊,两个东东都没声明。

你是说CP_UFT8和 CP_ACP 这2个常量貌似是win7自带的常量

WideCharToMultyByte是windows库里的,用了这种平台相关的东西就没法跨平台了
http://www.oschina.net/code/snippet_105637_23615
试试这个,实现跨平台编码转换

我想了下,最好的办法是根据CC_TARGET_PLATFORM宏的值,给出不同平台的实现方法,这样会比较方便

:12:为嘛整那么麻烦,中文存文件,解析后再用

bucuobucuo

VS->文件->高级保存选项
选UTF-8无签名…
或者NotePad++转为UTF8无bom
直接使用UTF8编码来写代码比你浪费时间去做这个快多了…