[求助]NODEJS 调用C 的DLL 返回值中文乱码,使用了FFI REF模块,新手入门,请大拿相助啊
发布于 10 年前 作者 clanwqq 7029 次浏览 最后一次编辑是 8 年前 来自 问答

var ffi = require(’./node_modules/ffi’); var ref = require(’./node_modules/ref’);

var myService = ffi.Library(’./HZSiInterface.dll’, { ‘INIT’: [ ‘int’, [ref.refType(ref.types.char)] ], ‘BUSINESS_HANDLE’:[‘int’,[‘string’,ref.refType(ref.types.char)]] });

var buf = new Buffer(20000); buf.type = ref.types.char; var sFlag = myService.INIT(buf); console.log(buf.toString());

var buf2 = new Buffer(50000); buf2.type = ref.types.char; var sFlag2 = myService.BUSINESS_HANDLE(‘2100^8204010^42^||^12121^1^12123123|20150325170704|^1^’,buf2); console.log(buf2.toString());

返回的控制台显示的: 乱码.png

实际应该返回的值: ^^操作员有未签退的业务周期号为:##20150325110816-8204-00000042-8351##,HIS系统传入的业务周期号错误!^返回值:0,错误句柄值:0x6d80000,FILE:DynamicRequest\EapagentEx.cpp,LINE:221

4 回复

没人支招吗?自己顶一个

@clanwqq 应该是编码问题 你用iconv-lite来转换一下 dll返回的可以是gb2312的编码 node原生是不支持这个编码格式的,需要转换

@chloe 我来试试。谢谢指点。

@chloe 试过了。通过了。谢谢了啊。帮我解决了一个难题。

回到顶部