ndk里中英文混排字串处理

fakebear 2010-11-15 03:28:47
项目要求打一份测试报告的log文件,要求中文。因为功能模块核心在NDK层,所以我把一些字串在java处理后,再传给NDK处理,NDK函数里追加一些内容,写入文件,具体实现如下:

java部分:
NATIONZSDLib.TestLogEnd(String.format("测试%d轮,上电测试%d次,下电测试%d次\nSDC私有命令%d条,共发现%d个错误", times,PowerUpTimes, PowerDownTimes, 6 * times, iErrorOcurCnt[0]));


NDK部分:
wchar_t tmpbuf[1024];
const jchar *tmp = (*env)->GetStringChars(env, log, NULL);
LOGE("TestLogEnd:");
LogBuffer2Str(tmp, 32);
swprintf(tmpbuf, 1024, L"测试结束于%d年%d月%d日%d时%d分, %ls", 1900+p->tm_year, 1+p->tm_mon, p->tm_mday, p->tm_hour, p->tm_min, (wchar_t*)tmp);
int num2write = write(LogFile, tmpbuf, strlen(tmpbuf));
(*env)->ReleaseStringChars(env, log, tmp);
if(num2write <= 0)
{
LOGE("error write log. error=%d", errno);
}
close(LogFile);


可是打印出来的内容有乱码,在c中写的中文都可以识别,但是java传过来的就都是乱码了,是什么原因呢?
...全文
132 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengwlmo 2011-08-17
  • 打赏
  • 举报
回复
楼主现在解决了吗,可不可以说说?那个,咳,在ndk里能直接往手机屏幕上写东西吗?应该用那个函数呢?我是菜鸟啊,先谢过
fakebear 2010-11-15
  • 打赏
  • 举报
回复
贴错一点代码,要把c代码中格式部分前面的L去掉,否则编译不过。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧