我真是個悲劇,最近在用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”。
這個時候奇蹟發生了,中文顯示正常,我真是個大悲劇!