我用c#开发会话存档功能,调用官方c的dll,使用解密方法DecryptData返回msg,再调用GetContentFromSlice(msg)出现部分中文乱码。
双数中文字的时候不会乱码,例:“您好”。单数中文字的时候最后一个字是乱码,例:“麻烦提供下截�?”,(原文:麻烦提供下截图)。
而且乱码的那条数据最后的双引号也没有返回,导致不能正常转成json格式,如下图:
之前开发了个java的版本,一切正常可以返回正常的中文数据。
同一条会话数据,用java中运行出来的encrypt_key、encrypt_msg和c#运行出来的encrypt_key、encrypt_msg一致,但是c#调用解密方法后就会出现前面说的情况。
是c#调用dll里的方法有什么前提需求吗?
您好,麻烦提供下使用的是否是java 版本sdk,以及是win还是linux环境, jdk版本
win环境
c#编码。不是java
Slice_t *psli = NewSlice();
psli->buf = (char*)"PR68r1WQBg/Ip/8hKLpsjIuULZdRT7qee5tDFqvD4OXN7ozCOS/rQDlfedIpr/nMTVkwh0IX58Ib8PZDJvHOCKppbWuCyx7UNIbkpcp0OiIVkc6JODyYSc5oY6MRjpG+iwVbDYoOkOMx2iqf3Gt+NtgzqXodux0vhzUoNBQqB7prvzBYjofVXLJzXgwNpVUx9FlxLKFb8FUaab+8uIUxU1sXmU+mYfMdzOWiK74TGAD5883O7C4WuwYAYRxQfdf6/b+nytWq+JT+Mc/JjPFYGC8X9+xc4myLmJSAh0uPSo4xA2ztIPTNHnv45CAMN7E7bBqdYMoL8qt5WvIFt6t8gggNmcV2LHsCm30=jZDReFcL";
DecryptData("JBJbDY7/qDxhRUEztGA+0shxP3PI1byQReTo3sQdfl+g2GOjLL+hTeVSnlsKYzp0PsHI12G8UAt8uz9kKEwY3A==", psli->buf, psli);
printf("GetChatData len1:%d data:%s\n", psli->len, psli->buf);
char* data = GetContentFromSlice(psli);
printf("GetChatData len:%d data:%s\n", psli->len, data);
FreeSlice(psli);
GetChatData len:206 data:{"msgid":"17585567368312684260_1596521306","action":"send","from":"yanghongliang","tolist":["wmWl9kBwAA2ZD1nhF-qlrHZsVisFT4qQ"],"roomid":"","msgtime":1596521306519,"msgtype":"text","text":{"content":"鍟?}}
会话存档问题描述:
Corpid:
相关代码返回:
调用接口:
调用时间点:
调用是传入的参数
java -jar -Dfile.encoding=utf-8 wechat-work-agent-0.0.1-SNAPSHOT.jar
spring boot 项目, 运行时指定编码即可
windows平台下java代码不正常,返回中文是奇数时GBK数据乱码? 动态库方法GetContentFromSlice的返回值能不能改成utf8或者ISO-8859-1的
楼主能把c# rsa解密的关键代码贴出来吗,我试了下一直10008.。。。。不知什么问题,qq:1056657216, 跪求老铁指导啊
我用私钥解密encrypt_random_key 后得到的key,去调用 DecryptData 这个接口,在C++和java 都会出现乱码,我在怀疑是不是 encrypt_random_key 解密的key有问题,导致这样。
我的也是乱码,用提供的C++ demo也是乱码
接的时候要用IntPtr接返回值,然后转成string类型的就可以了。
感觉肯定是C#中的编码问题了,我用java版本也是正常的