JNI解決字符串亂碼問題

  • 定義java測試類
package com.example;

public class StringDeal {
    
    public native static String resolveString(String str);
    
    static{
        System.loadLibrary("StringDeal");
    }
    public static void main(String[] args) {
        System.out.println(resolveString(""));
    }

}

  • 實現(xiàn)c代碼

/*
* Class:     com_example_StringDeal
* Method:    resolveString
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT jstring JNICALL Java_com_example_StringDeal_resolveString
(JNIEnv *env, jclass jcls, jstring jstr){
    char *c_str = "我是來自c的字符串,現(xiàn)在要返回給java端使用";
    printf("%s \n", c_str);
    //查找class
    jclass jclz = (*env)->FindClass(env, "java/lang/String");
    if (jclz == NULL)
    {
        return NULL;
    }
    //獲取構(gòu)造函數(shù)
    jmethodID jmid = (*env)->GetMethodID(env, jclz, "<init>", "([BLjava/lang/String;)V");
    if (jmid == NULL)
    {
        return NULL;
    }
    //獲取字符串長度
    jsize size = strlen(c_str);
    //構(gòu)建一個新的jbyteArray
    jbyteArray jbytes =(*env)->NewByteArray(env, size);
    //將c_str的值賦給jbytes
    (*env)->SetByteArrayRegion(env, jbytes, 0, size, c_str);
    //構(gòu)建字符編碼
    jstring js = (*env)->NewStringUTF(env, "GB2312");
    //創(chuàng)建一個String對象 通過構(gòu)造函數(shù)String(byte [] bytes ,String charset);
    return (*env)->NewObject(env, jclz, jmid, jbytes, js);;

}

運(yùn)行結(jié)果.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • 今天看了無戒的文章《你是否寫了很久,沒有閱讀量準(zhǔn)備放棄》,面臨沒有靈感的困頓我經(jīng)常會考慮要不要放棄,天天在路上想今...
    溪水音閱讀 296評論 9 4
  • 刀起刀落 尚 笑 在菜市場的豬肉攤上,賣肉的師傅給買家割肉時,總是按照從豬脊柱的地方開始,平行的一條一條的往下割,...
    高尚笑閱讀 507評論 0 0
  • 這個冬天大概總是煙霧朦朧我不開心不想目光所及捕不到你的身影我在期待他離開的日子我在等待等你歸來從未落落大方請寬恕我...
    青蛙大俠閱讀 337評論 0 0

友情鏈接更多精彩內(nèi)容