C# socket 收信乱码。

pujitan978 2019-03-22 05:12:47
服务器侧发送 中文 "明天去旅游"
Client是C#程序,接受调用DLL,直接传参数String str.
Client是中文系统时,不乱码,Clinet 是日文系统时,str中内容乱码?为什么?

//接受内容
sRet = Focas1.cnc_rdalmmsg2(Flibhndl, (short)-1, ref num, odbalarmMsg2);

str = odbalarmMsg.msg1.alm_msg.ToString();
**日文系统下str内容是乱的。


**用下面转换也是乱的。
byte[] gb = System.Text.Encoding.GetEncoding("GB2312").GetBytes(alarmmsg);
string ddd = System.Text.Encoding.GetEncoding("GB2312").GetString(gb);

...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pujitan978 2019-03-22
  • 打赏
  • 举报
回复
引用 4 楼 pujitan978 的回复:
[quote=引用 3 楼 stherix 的回复:]
应该服务端编码和客户端不一样
服务端可能默认是UTF8或者GB2312
而客户端默认是Shift-JIS等日文编码
有原始字节流吗?
还是只有字符串?先按Shift-JIS转回去再用GB2312转回来看看


没有流,只有字符串,按你方法我试试看。[/quote]

引用 4 楼 pujitan978 的回复:
[quote=引用 3 楼 stherix 的回复:]
应该服务端编码和客户端不一样
服务端可能默认是UTF8或者GB2312
而客户端默认是Shift-JIS等日文编码
有原始字节流吗?
还是只有字符串?先按Shift-JIS转回去再用GB2312转回来看看


没有流,只有字符串,按你方法我试试看。[/quote]


解决了,先转shift jis,再转gb2312
pujitan978 2019-03-22
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
应该服务端编码和客户端不一样
服务端可能默认是UTF8或者GB2312
而客户端默认是Shift-JIS等日文编码
有原始字节流吗?
还是只有字符串?先按Shift-JIS转回去再用GB2312转回来看看


没有流,只有字符串,按你方法我试试看。
stherix 2019-03-22
  • 打赏
  • 举报
回复
应该服务端编码和客户端不一样 服务端可能默认是UTF8或者GB2312 而客户端默认是Shift-JIS等日文编码 有原始字节流吗? 还是只有字符串?先按Shift-JIS转回去再用GB2312转回来看看
pujitan978 2019-03-22
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
utf8


utf8也尝试了,也是乱码
wanghui0380 2019-03-22
  • 打赏
  • 举报
回复
utf8

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧