一步一步学习androidNDK编程(log调试和解决中文乱码)

上一篇说到了androidNDK编程的helloworld,今天,学习了如何在ndk开发时候,在c代码当中,向java代码那样,打印出log

1. 我们需要引入头文件:

#include <android/log.h>

2.定义打印的tag,这里相当于java中的static final类型

#define LOG_TAG "onEvent"

3.定义宏,相当于声明一个方法:

#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##args)

4.在c代码中使用:

LOGD("我是需要被打印的字符串");

经过以上四步,我们就可以像在java代码中那样,打印log了,并且,我们这里声明的tag为"onEvent",因此同样可以通过"adb logcat | grep -n "onEvent"" ,这样的命令来过滤查询。

下面如何解决中文乱码的问题:

如果我在c代码中返回这样一个字符串:return (*env)->NewStringUTF(env,"hello world 我是中国人");    这样做是有可能存在乱码情况的,那么如何解决的呢,其实很简单,只需要将该android工程和对应的.c文件编码方式同时设置为utf-8格式即可。

这里需要注意的一点是,如果是在早期的ndk版本中,我们需要这么写:

1.首先调用声明的native方法,得到c代码汇总返回的字符串

String tempStr = helloWorldNdk();

2.通过以下代码来实现编码的转换:

try {

new String(tempStr.getBytes("iso-8859-1"),"utf-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

时间: 2024-11-08 22:52:20

一步一步学习androidNDK编程(log调试和解决中文乱码)的相关文章

一步一步学习androidNDK编程(java给c传递数据)

这篇已经是"一步一步学习androidNDK编程"的第四篇了,在这篇中,我们将会在java中传递代码给c代码. 首先,我们新建一个android工程"ndkdata", 第一步: 同样的首先声明native方法,如下: public native int add(int a,int b); public native String helloSir(String name); public native int[] intMethod(int[] intArray)

Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法

做个打飞机的游戏,由于版本太新,网上基本没有教教程,我的版本是cocos2d-x 3.1.1的,今天遇到cocos2dx中中文乱码的问题.无奈只好Google百度寻求答案,明白了这个问题的缘由.因为cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码. 解决这个问题有三种办法: 将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题 将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来

一步一步学习androidNDK编程(hello world)

上一篇博客,已经搭建好了windows下的linux环境(cygwine),这次我们试着写一个hello world.首先需要去android的官网下载android-ndk压缩包,之后解压,进入解压后的目录,我们发现有一个ndk-build的脚本文件,这个脚本文件就是我们用交叉编译的文件.我们通过  "./ndk-build"  来运行该命令,如下图: 因为目前我们没有编译任何c代码,所以会提示"could not find application project dire

关于VIM的学习计划,和vim7.3编辑器中文乱码的解决方案

前段时间公司项目针对的公司要使用linux,所以,下了一番功夫在linux上. 说真的,windows开发和部署习惯了,linux确实有点陌生,但作为开发人员,攻城狮,linux又怎么可以错过呢?所以,下了一番功夫,项目也部署成功了,其中总结的一些东西,以后有机会会陆续贴上来的. 提到linux,键盘命令是肯定绕不开的,绝不会有人傻傻的装个图形化界面版的linux系统,然后用鼠标去点击,恐怕会被人取笑的.当然,提到命令,linux下的文本编辑也肯定是需要下功夫的,但鉴于平常的工作环境,不能时时的

JMeter学习-031-JMeter 3.0 POST Body Data 中文乱码问题

今天,朋友将 JMeter 的版本由 2.13 升级到了 3.0 发现之前接口脚本 POST 请求主体中的中文无法正确显示,现象如下图所示: 注意,这不是乱码,而是因在 3.0 版本对Body Data 进行了优化,导致默认字体(Consolas)不支持汉字显示. 解决方案:修改配置文件{JMETER_HOME}\bin\jmeter.properties 中的默认显示字体,改为系统支持的中文字体(可进入系统目录[控制面板\所有控制面板项\字体]查看)即可. # 默认字体设置的配置项如下黑体标示

Hive学习之路 (七)Hive中文乱码

Hive注释中文乱码 创建表的时候,comment说明字段包含中文,表成功创建成功之后,中文说明显示乱码 create external table movie( userID int comment '用户ID', movieID int comment '电影ID', rating int comment '电影评分', timestamped bigint comment '评分时间戳', movieName string comment '电影名字', movieType string

JSP的学习(4)——中文乱码的解决

本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时,经常要使用响应对象Response来设置使用的编码表或者给浏览器输出的响应中的响应头设置某个编码表,如在之前博客<Servlet的学习之Response响应对象(1)> 中介绍的一样. 本篇主要以上一篇<JSP的学习(3)——语法知识二之page指令>中page指令的最后部分的两个属

[原创]java WEB学习笔记17:关于中文乱码的问题 和 tomcat在eclipse中起动成功,主页却打不开

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Linux C编程学习5---参考《那年,一步一步学linux c》全系列(目录索引)

漫无目的的搜索一些东西,发现的一个很好的资源,所以就一定要收藏下来,方便自己学习Linux C 的时候也能够去参考一下别人的学习之路,来更加促进我的学习和思考 说明 转载请注明出处:谢谢:http://blog.csdn.net/muge0913/article/details/7342977 博主的邮箱是:[email protected] 文章中若有不对或某些功能更好的实现方法,请指出或直接留言. 该系列文章中所用结构数据代码均来自linux2.6.39. 1.那年,一步一步学linux c