使用getFileData读取文本多了写乱码

unsigned long len = 0;
    const char* file = (char*)CCFileUtils::sharedFileUtils()->getFileData(Config::getResFullPath("json/image.json").c_str(), "r", &len);
    printf("%d %d\n", len, strlen(file));
    std::cout << file;

```



读取了一个json文件 文件编码是utf-8
读取后打印出来比实际内容多了一些乱码
getFileData返回的长度也比读出来的char少

请问这是怎么回事 

求助。。。。。。。。。。。。。。

你终端也是utf8吗?

win32项目调试 应该也是吧…具体不清楚 搜索了都别人都是用的utf8的编码

我的win7 企业中文版默认是GBK。
所以可能是终端的原因。

解决了 不是编码问题
独处来后是二进制的buff 所以前后多了写标识符之类的操作 通过指针把结尾修改为 \0 vs就能认为字符…

unsigned long ilength;
    char* pBuffer = (char*)CCFileUtils::sharedFileUtils()->getFileData(Config::getResFullPath("json/enemyPlane.json"), "rb", &ilength);
    char* pstr = pBuffer;
    string str(pBuffer);
    pstr += ilength;
    *pstr = '\0';

    CCLog("%s\n", pBuffer);

    std::cout << ilength << "返回长度\n";
    std::cout << strlen(pBuffer) << "读出的字符串的长度\n";
```

:14::14:高手在民间啊。顶……