CNode

[求助]NODEJS 调用C 的DLL 返回值中文乱码,使用了FFI REF模块,新手入门,请大拿相助啊

问答
Cclanwqq发布于11 年前最后回复11 年前4 回复7607 浏览0 收藏

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)

C
clanwqq#1·11 年前

没人支招吗?自己顶一个

C
chloe#2·11 年前
引用 clanwqq没人支招吗?自己顶一个

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

参与回复
登录后即可参与回复。登录