From: http://www.cnblogs.com/yujiaao/p/3691938.html

因为linux下cocostudio wine安装不上 而且又要开发windows程序 果断舍弃了ubuntu而实用vs2013 去玩cocos2dx3.0

花了一天的时间才解决中文乱码 泪奔ing 分享记录下 下面是我尝试的的过程:

1相关设置

右键项目属性——》配置属性---》常规---选择Unicode编码

发现仍然是乱码

2 更换字体无效(我最开始一直以为这个问题 各种纠结)

3使用Userdefault存数据在取出

xml文件是utf8的 但是取出还是无效

4.严重怀疑编译器虽然调整为Unicode 但是缺要转为ansi编译 而编译过程中某些字符串可能不转编码导致乱码。。。(对于vs不太了解)

疯狂查看源码和各种资料   发现  项目名称/cocos2d/extensions/proj.win32

里面有个win32inputbox的类(h和cpp)查看里面有转码方法(网上2.x给的资料是有个third_party里面有转码 但是没找到)

在源码中引入头文件无效(原因是虽然文件存在 但是编译器没有把他识别为源码)需要在解决工具面板  右键添加现有项 添加头文件和cpp文件沮洳工程即可

Win32InputBox.h Win32InputBox.cpp 两个文件 要把 他们通过添加现有项的方式添加进来 然后看h的源码 里面有静态转码函数

然后使用

std::string CWin32InputBox::AnsiToUtf8(std::string strAnsi) 转换一下即可(其实为什么要转成utf8 我也不懂 我试着反着转换发现不行)

有源码就是好 找不到的东西最后到源码包里面去翻 可以深入理解每一个细节。。。。

ps:我觉得那两个静态转换的函数挺实用的 果断记录下来 以后在遇到编码问题的时候备用

#include <windows.h>
#include <tchar.h>
std::string AnsiToUtf8(std::string strAnsi)
{
std::string ret;
if (strAnsi.length() > 0)
{
int nWideStrLength = MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, NULL, 0);
WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR));
memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR));
int nUtf8Length = WideCharToMultiByte( CP_UTF8,0,pwszBuf,-1,NULL,0,NULL,FALSE );
char* pszUtf8Buf = (char*)malloc((nUtf8Length+1)*sizeof(char));
memset(pszUtf8Buf, 0, (nUtf8Length+1)*sizeof(char));
WideCharToMultiByte(CP_UTF8, 0, pwszBuf, -1, pszUtf8Buf, (nUtf8Length+1)*sizeof(char), NULL, FALSE);
ret = pszUtf8Buf;
free(pszUtf8Buf);
free(pwszBuf);
}
return ret;
}
std::string Utf8ToAnsi(std::string strUTF8)
{
std::string ret;
if (strUTF8.length() > 0)
{
int nWideStrLength = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR));
memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR));
MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR));
int nAnsiStrLength = WideCharToMultiByte( CP_ACP,0,pwszBuf,-1,NULL,0,NULL,FALSE );
char* pszAnsiBuf = (char*)malloc((nAnsiStrLength+1)*sizeof(char));
memset(pszAnsiBuf, 0, (nAnsiStrLength+1)*sizeof(char));
WideCharToMultiByte(CP_ACP, 0, pwszBuf, -1, pszAnsiBuf, (nAnsiStrLength+1)*sizeof(char), NULL, FALSE);
ret = pszAnsiBuf;
free(pszAnsiBuf);
free(pwszBuf);
}
return ret;
}

cocos2dx 3.0 windows平台 中文乱码解决相关推荐

  1. windows控制台中文乱码解决方法

    windows控制台中文乱码解决方法 参考文章: (1)windows控制台中文乱码解决方法 (2)https://www.cnblogs.com/ziwuge/archive/2011/12/27/ ...

  2. ubuntu windows mysql 中文乱码解决

    sudo gedit /etc/mysql/my.cnf [mysqld]  init_connect='SET collation_connection = utf8_unicode_ci'  in ...

  3. powershell中文乱码解决办法

    chcp 65001 set ip=777777777777777777 SET filePath="G:\application.properties" if exist %fi ...

  4. Windows Tomcat安装配置,Tomcat 启动闪退,Tomcat中文乱码解决

    ================================ ©Copyright 蕃薯耀 2021-12-29 ​​​蕃薯耀的博客_CSDN博客 一.Tomcat 启动闪退问题描述 apache ...

  5. Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法

    Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...

  6. windows下git bash中文乱码解决办法

    一.解决办法1:(直接上图) 1.在git bash下,右键 出现下图,选择options: 2.选择"Text" 3.将"Character set"设置为 ...

  7. [转]java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码

    http://www.cnblogs.com/chenssy/ java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码 随着计算机的发展.普及,世界各国为了适应本国的语言 ...

  8. vs code中文乱码解决方法

    修改 1.(安装方法) 2.显示终端输入数据输出结果(完美解决) 3.修改部分:中文乱码解决方法 第一步: 第二步: 1.(安装方法) 转载于: https:blog.csdn.net/qq_4304 ...

  9. python打包出现乱码_python解压zip包中文乱码解决方法

    乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...

最新文章

  1. Win强制删除文件windows批处理强行删除文件
  2. flutter中state详解
  3. mysql时间复杂度o的n次方_MySQL性能测试调优
  4. excel转成csv格式的默认分隔符
  5. 根据用户查进程_【磨叽教程】Android进阶教程之在Android系统下各进程之间的优先级关系...
  6. es 时间字段聚合_ES之五:ElasticSearch聚合
  7. UIScrollView的简单使用
  8. java hdfs 指定用户目录_HDFS目录(文件 )权限管理
  9. c++程序设计中的多态与虚函数知识点
  10. python学习06
  11. PHP+MySql+PDO小案例—文章管理系统
  12. Ubuntu 8.04 LTS的离线升级包运用教程
  13. 宏自动生成条形码_条码打印软件如何生成SKU码
  14. ubuntu14.0.4安装drozer
  15. 数据泵并行parallel参数问题
  16. rabbitmq和erlang版本对应关系
  17. 怎么让联想计算机升级,联想电脑怎么升级win11?联想电脑升级win11的几种方法...
  18. 零基础自学Java路线总结,有效利用网络各机构课程资源
  19. 我的Android进阶之旅------gt;/storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别...
  20. 域名之父—蔡文胜 (下篇)

热门文章

  1. 软件本地化 pdf_软件本地化与标准翻译
  2. python 仪表盘_如何使用Python刮除仪表板
  3. 单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作
  4. 深度学习数据扩张_适用于少量数据的深度学习结构
  5. leetcode 1004. 最大连续1的个数 III(滑动窗口)
  6. leetcode64. 最小路径和(dp)
  7. 如何使用ArchUnit测试Java项目的体系结构
  8. Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP
  9. Centos7 安装python3.7.2
  10. 中间介(MiddleWare)