Cocos移植到Android的一些问题-中文乱码问题

Android平台版本和设备碎片化很严重,因此从Win32平台移植到Android平台会有很多问题,下面是我们归纳的从Win32平台移植到Android平台遇到的一些问题。
在Android平台中文乱码并不是一个问题,或者说在Android平台是不应该出现中文乱码的。这个问题究其根本是因为我们在Windows下采用开发Android应用导致的问题。默认情况下Windows中文环境是采用GBK编码,源程序文件HelloWorldScene.cpp编码默认也是GBK,如果源程序代码中如果有中文输入,例如下面的代码:

[html] view plaincopy

  1. void HelloWorld::OnClickMenu1(Object* pSender)
  2. {
  3. NoteDAO::initDB();
  4. NoteDAO::create("2008-08-16 10:01:02", "初始化数据。");
  5. }
  6. void HelloWorld::OnClickMenu2(Object* pSender)
  7. {
  8. string currentTime = MyUtility::getCurrentTime();
  9. log("%s",currentTime.c_str());
  10. NoteDAO::create(currentTime, "欢迎使用MyNote。");
  11. }

这样程序编译之后的中文编码还是GBK,由于Android平台采用的编码是UTF-8,当它们在Android平台通过日志函数或标签等控件输出时候就会乱码。
解决方法很简单,我们只需要把HelloWorldScene.cpp文件另存为UTF-8就可以了,用记事本等文本编辑工具打然后另存为UTF-8就可以,如果是在Visual Studio工具中可以选择菜单文件→高级保存选项,在弹出如图所示对话框,选择编码为Unicode(UTF-8带签名),然后点击确定按钮保存。

高级保存选项

我们只需要对有中文字符的文件(包括h和cpp文件),采用上面的另存为UTF-8字符集就可以了,其它的文件可以不用考虑。需要记住的是在Android和iOS平台UTF-8在字符集的默认标准。

更多内容请关注国内第一本Cocos2d-x 3.2版本图书《Cocos2d-x实战:C++卷》

本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

欢迎加入Cocos2d-x技术讨论群:257760386

欢迎关注智捷iOS课堂微信公共平台

时间: 2024-11-05 18:31:50

Cocos移植到Android的一些问题-中文乱码问题的相关文章

如何解决android studio 运行时中文乱码的问题

相信很多朋友都会遇到android studio 在MAC OS中运行的时候中文乱码.而在代码编辑的时候正常.经过几天的不断寻找解决办法,终于解决了 比如: Toast.makeText(MainActivity.this,"我爱你", Toast.LENGTH_LONG).show(); 运行的时候在模拟器里就是乱码. 解决办法网上很多,但是都不能解决运行时乱码的问题.所以这个问题苦恼了几天. 我们在工程里的build.grandle 文件中添加一段代码即可 tasks.withTy

arcgis for android 读取shp文件中文乱码解决方法

设置注册表默认字符,即可解决中文乱码问题. 'dbfDefault' 设置方法1.开始--运行,输入”Regedit“,打开注册表.2.如是用的是 10.x 版本 ArcGIS Desktop,定位到”My Computer\HKEY_CURRENT_USER\Software\ESRI\Desktop 10.x' (如果是9.3.1之前的版本,定位到 'My Computer\HKEY_CURRENT_USER\Software\ESRI').3.创建项 'Common',接着创建 'Code

Android Volley 框架JSON中文乱码问题的解决

近期在项目中使用Volley作为网络通信框架,却发现在传输中文时会出现乱码.先交代一下项目的软硬件的基础设施 线上: Django+restful_framework+monogdb APP: Android + volley 在使用android端测试之前,我使用了chrome中的Postman这款插件进行了测试,发现,中文读取是正常的.说明服务器返回的是UTF-8字符编码的数据. 但是为什么在Android端会出现乱码的现象呢. 我在想是不是本地端的字符编码出了问题? 我就是用String类

android 通信中的中文乱码问题

1.要解决中文乱码问题,首先得了解什么是字符编码 计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码.要制定字符编码首先要确定字符集,并将 字符集内的字符排序,然后和二进制数字对应起来,根据字符集内字符的多少,确定几个字节来编码. 2.常用的字符编码 ASCII 编码是目前计算机中常用的最广泛地 字符集及其编码.ISO-8859-1可以表示的是西欧语言,看起来很单一,但是由于是单字节编码,与计算机最基础的表示单位一致,所以在很多时候,仍旧使用ISO-8859-1编码

Cocos移植到Android的一些问题-SQLite3数据库移植问题

首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一种是从SQLite官网下载源代码拷贝的工程中.第一种方法配置起来比较麻烦,关键是Cocos2d-x提供的SQLite3库只是Win32没有其它平台的,目录结构如下所示.<游戏工程目录>\cocos2d\external\sqlite3│  Android.mk│├─include│      sq

FMX Android ZIP解压中文乱码

在手机上解压了一个WINDOWS上的压缩文件, 发现中文是乱码的,解决方法如下: 找到System.zip.pas文件 将E := TEncoding.GetEncoding(437);   改为 E := TEncoding.GetEncoding(936); 保存后新建多平台项目,添加此文件后重新编译, 编译此项目,将System.zip.dcu和System.zip.so两个文件, 分别覆盖到DELPHI的安装目录下\lib\android\release,以及\lib\android\d

Android studio 解决setText中文乱码问题

我在用Android Studio编译器的时候,总会遇到很多乱码的问题.第一个乱码问题是在Layout文件里面定义了EditText,在代码中需要将获取到的内容填充到EditText里面,这时候如果有中文就会出现乱码,代码如下: super.onCreate(save); setContentView(R.layout.second); EditText show = (EditText)findViewById(R.id.show); ComponentName comp = getInten

android studio 模拟器出现中文乱码解决办法

首先找到Gradle Scripts下的build.gradle(Module:app)文件,然后再buildToolsVersion下方加入android{compileOption.encoding="GBK"}代码,如图: A

Cocos移植到Android-通过命令行交叉编译打包

当我们在Windows下使用Visual Studio开发好Win32平台的游戏程序后,我们需要把它们移植到不同的平台上.Cocos2d-x支持很多个平台,然而,我们不可能介绍全部平台的移植.我们总结了目前业界流行的三个平台:Android.iOS和Windows Phone 8,我们介绍Android平台下移植相关工作. 环境配置成功之后,我们就可以进行交叉编译了,能够进行交叉编译的方法有很多,但是最为方便的是Cocos2d-x 3.0之后提供的Cocos工具(位于< cocos2d-x安装目