成功解決JNA中,C++的char* 到 JAVA的String傳值時的中文亂碼

     我真是個悲劇,最近在用java的JNA寫一個調用c++的dll,進行PE文件分析的程序!結果遇到一個大問題,找了2天都沒有解決。

    問題是這樣的:

    我在vc中導出的函數PEANALYZER_API char* GetFileName(void);

#ifdef PEANALYZER_EXPORTS
#define PEANALYZER_API __declspec(dllexport)
#else
#define PEANALYZER_API __declspec(dllimport)
#endif

PEANALYZER_API char* GetFileName(void);

 函數中返回值的類型用的char*。

     在java這邊定義函數public String GetHeaderName(int HeaderIndex);

public String GetHeaderName(int HeaderIndex);

 返回值類型用String來接收傳來的char*。

     英文當然沒有問題,但當我使用中文的時候,悲劇就發生了,一堆亂碼。我Goolge了兩天,各種方法,各種編碼轉來轉去都沒有解決。什麼byte-》char啊,什麼char—》byte,都不行,我無語了!,最後無奈之下,我試了試將eclipse(JAVA開發我當然用這個好東西啦!)我原先設置的默認的編碼“UTF-8”改成了“inherited from container gb18030”。

這個時候奇蹟發生了,中文顯示正常,我真是個大悲劇!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章