我在用c/c++做android的东西,新手,有很多董的东东。在用jni传递中文时,会出现乱码的情况,要进行编码转换。那位大侠有相关的转码方法。
bool handleString(char* name)
{
jstring rtnname = 0;
int slenname = strlen(name);
unsigned short * namebuffer = 0;
if( slenname == 0 )
rtnname = mEnv->NewStringUTF(name);
else
{
wchar_t* wname = NULL;
setlocale(LC_ALL,"");
int namelength=mbstowcs(wname,name,strlen(name)*2);
namebuffer = (unsigned short *)malloc(namelength*2 + 1 );
if((rtnname = mEnv->NewString( (jchar*)namebuffer, namelength )) == NULL)
return false;
if( namebuffer )
free(namebuffer );
}
return true;
}
这个方法就不要帖了。在android的里找不到mbstowcs,用别人修改过的ndk-r4版,也找不到,不知道在MakeFIle里要加什么连接设置。
同一问题,还有一个帖子:http://topic.csdn.net/u/20110415/17/f5b72204-e94c-47bb-a6e1-b5a79e05a415.html?seed=1538378095&r=72832678#r_72832678
解决的化两个帖子都会一下,一起给分。
bool handleString(char* name)
{
jstring rtnname = 0;
int slenname = strlen(name);
unsigned short * namebuffer = 0;
if( slenname == 0 )
rtnname = mEnv->NewStringUTF(name);
else
{
wchar_t* wname = NULL;
setlocale(LC_ALL,"");
int namelength=mbstowcs(wname,name,strlen(name)*2);
namebuffer = (unsigned short *)malloc(namelength*2 + 1 );
if((rtnname = mEnv->NewString( (jchar*)namebuffer, namelength )) == NULL)
return false;
if( namebuffer )
free(namebuffer );
}
return true;
}
这个方法就不要帖了。在android的里找不到mbstowcs,用别人修改过的ndk-r4版,也找不到,不知道在MakeFIle里要加什么连接设置。
同一问题,还有一个帖子:http://topic.csdn.net/u/20110415/17/f5b72204-e94c-47bb-a6e1-b5a79e05a415.html?seed=1538378095&r=72832678#r_72832678
解决的化两个帖子都会一下,一起给分。
解决方案 »
- videoview用代码怎么控制全屏播放?
- 求免费的 Remote Desktop Client for Android 工具
- android 登录个人邮箱
- 请教Android布局管理器简单问题:@+id/ok
- 急急急,使用IO流读取数据
- 关于Acitivity02的问题
- 香奈儿互动展览厅-很炫的触摸设计
- 新手提问,百度定位sdk中初始化LocationClient类的问题
- 在Cygwin中添加该代码的作用是什么?(ndk是android ndk)
- handler 中使用lock.lock锁住代码块,这样做有必要么?是符合逻辑的吗?hanlder中会出现多线程的情况?
- android模拟器怎么那么不稳定
- QQ通讯录的快速搜索功能
android这个板块是不是不行啊?我问了好多问题,怎么都没有好的解决办法。还是要自己一点点弄!
头大.......