日期:2014-05-17  浏览次数:20980 次

c# 调用GBK编码的WebService发送数据给服务器时,对方收到数据为乱码,但我收到的返回则没有乱码
1:我在c#的工程中加载了Java写的WebService.
2:我在工程中调用了WebService的方法发送数据到WebService中。
3:服务器方采用的是GBK编码,对方收到我的请求数据时,说里面的中文为乱码。
4:对方回复我的消息,我收到的数据是正常的,没有乱码。
5:为了给服务器发送GBK编码的消息,我在发送前把UTF8转为了GBK,方法如下:
string strMsg = "中文编码 123a";
Byte[] temp = Encoding.UTF8.GetBytes(strMsg);
string dataGBK = Encoding.GetEncoding("GBK").GetString(temp);
然后把dataGBK发送出去了。
但是对方收到的数据依然是乱码,请各位高手帮忙解释下,并给出解决方法。
WebService调用 C# GBK编码 服务器方收到乱码

------解决方案--------------------
嗯嗯,查了一下文档,.NET自带的消息编码器好像只支持UTF-8、UTF-16 和 Big Endean Unicode这三种编码,要想使用其他编码,需要自己写一个自定义的消息编码器,在下面的文档里有完整的例子:
http://msdn.microsoft.com/en-us/library/ms751486.aspx
------解决方案--------------------
配置文件里不支持的话,自己代码里面修改,BasicHttpBinding的TextEncoding是可以设置的,你找到你产生的cs文件后,去找里面修改BasicHttpBinding的地方。我因为不用自动引用很久了,无现成代码可循,你自己找找吧。