大家好:
我使用Eclipse+ADT+SDK(2.2)+Cygwin+NDK(R4)集成环境来测试JNI功能,C/C++里面的字符串传递到JAVA这边,如果是英文和数字的话,都没问题。如果含有中文字符的话,模拟器就会不显示,同时LogCat显现JVM Aborting异常。
C代码如下:
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
   
    return (*env)->NewStringUTF(env, "Hello from JNI =20100817中文字!");
}请大家帮忙看一下,谢谢!

解决方案 »

  1.   

    中文转成utf-8的吧
    不过通过jni传输字符是有些问题,最好直接传byte到java层再转成sting
      

  2.   

    jstring getTextByPosition(JNIEnv *env, jobject thiz, jdouble start, jdouble end)
    {
    dp::String text = document->getText(startLoc, endLoc);
    jstring rs = (env)->NewStringUTF(text.utf8());
    return rs;
    }
    楼主请look;
      

  3.   

    C代码如下:
    jstring
    Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
      jobject thiz )
    {
        
      return (*env)->NewStringUTF(env, "Hello from JNI =20100817中文字!");
    }
    能否结合这个代码给修改一下。谢谢!
      

  4.   

    jstring getStringFromJNI(JNIEnv *env, jobject thiz)
    {
    jstring rs = (env)->NewStringUTF("中华人民共和国");
    return rs;
    }java 调用
    Log.d("",AdobeLibrary.getStringFromJNI());显示:
    D/        (  373): 中华人民共和国
    我的都OK阿
      

  5.   


    logcat平时显示java中的utf-16确实是乱码,本次显示utf8能出中文了? 等待亲眼看看,目前还没见过logcat对中文不乱码的呢,不错