cocos2dx 3.0 windows平台 中文乱码解决
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平台 中文乱码解决相关推荐
- windows控制台中文乱码解决方法
windows控制台中文乱码解决方法 参考文章: (1)windows控制台中文乱码解决方法 (2)https://www.cnblogs.com/ziwuge/archive/2011/12/27/ ...
- ubuntu windows mysql 中文乱码解决
sudo gedit /etc/mysql/my.cnf [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' in ...
- powershell中文乱码解决办法
chcp 65001 set ip=777777777777777777 SET filePath="G:\application.properties" if exist %fi ...
- Windows Tomcat安装配置,Tomcat 启动闪退,Tomcat中文乱码解决
================================ ©Copyright 蕃薯耀 2021-12-29 蕃薯耀的博客_CSDN博客 一.Tomcat 启动闪退问题描述 apache ...
- Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法
Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...
- windows下git bash中文乱码解决办法
一.解决办法1:(直接上图) 1.在git bash下,右键 出现下图,选择options: 2.选择"Text" 3.将"Character set"设置为 ...
- [转]java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码
http://www.cnblogs.com/chenssy/ java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码 随着计算机的发展.普及,世界各国为了适应本国的语言 ...
- vs code中文乱码解决方法
修改 1.(安装方法) 2.显示终端输入数据输出结果(完美解决) 3.修改部分:中文乱码解决方法 第一步: 第二步: 1.(安装方法) 转载于: https:blog.csdn.net/qq_4304 ...
- python打包出现乱码_python解压zip包中文乱码解决方法
乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...
最新文章
- Win强制删除文件windows批处理强行删除文件
- flutter中state详解
- mysql时间复杂度o的n次方_MySQL性能测试调优
- excel转成csv格式的默认分隔符
- 根据用户查进程_【磨叽教程】Android进阶教程之在Android系统下各进程之间的优先级关系...
- es 时间字段聚合_ES之五:ElasticSearch聚合
- UIScrollView的简单使用
- java hdfs 指定用户目录_HDFS目录(文件 )权限管理
- c++程序设计中的多态与虚函数知识点
- python学习06
- PHP+MySql+PDO小案例—文章管理系统
- Ubuntu 8.04 LTS的离线升级包运用教程
- 宏自动生成条形码_条码打印软件如何生成SKU码
- ubuntu14.0.4安装drozer
- 数据泵并行parallel参数问题
- rabbitmq和erlang版本对应关系
- 怎么让联想计算机升级,联想电脑怎么升级win11?联想电脑升级win11的几种方法...
- 零基础自学Java路线总结,有效利用网络各机构课程资源
- 我的Android进阶之旅------gt;/storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别...
- 域名之父—蔡文胜 (下篇)
热门文章
- 软件本地化 pdf_软件本地化与标准翻译
- python 仪表盘_如何使用Python刮除仪表板
- 单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作
- 深度学习数据扩张_适用于少量数据的深度学习结构
- leetcode 1004. 最大连续1的个数 III(滑动窗口)
- leetcode64. 最小路径和(dp)
- 如何使用ArchUnit测试Java项目的体系结构
- Building a WAMP Dev Environment [3/4] - Installing and Configuring PHP
- Centos7 安装python3.7.2
- 中间介(MiddleWare)