成功解决JNA中,C++的char* 到 JAVA的String传值时的中文乱码

本文详细描述了使用Java调用C++ DLL进行PE文件分析时遇到的中文乱码问题,以及如何通过修改Eclipse默认编码设置解决此问题的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     我真是个悲剧,最近在用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”。

这个时候奇迹发生了,中文显示正常,我真是个大悲剧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值