项目要求打一份测试报告的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传过来的就都是乱码了,是什么原因呢?