当前位置: 代码迷 >> Web Service >> iphone ipad android手机访问wcf service出现中文乱码(!)
  详细解决方案

iphone ipad android手机访问wcf service出现中文乱码(!)

热度:1859   发布时间:2014-01-03 14:10:51.0
iphone ipad android手机访问wcf service出现中文乱码(在线等!)
wcf端:

        [OperationContract]
        [WebInvoke(Method = "POST",
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat = WebMessageFormat.Json)]
        Stream GetList(SomeObject dto);

web.config:

<service behaviorConfiguration="ProductBehavior" name="ProductService">
        <endpoint address="" behaviorConfiguration="ProductBehavior" binding="webHttpBinding" bindingConfiguration="" contract="IProduct">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>

然后具体的转化为stream是这样:

            MemoryStream stream = new MemoryStream();
            DataContractJsonSerializer ser = new DataContractJsonSerializer(type);
            ser.WriteObject(stream, list);
            string tmpStr = System.Text.Encoding.UTF8.GetString(stream.ToArray());
            Stream rtnStream = new MemoryStream(Encoding.UTF8.GetBytes(tmpStr));
            return rtnStream;

服务端是这样,客户端也是正常接收的,我用HttpPost测试然后用:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                res = reader.ReadToEnd();
                reader.Close();

也可以的,ipad可以正常访问,iphone和android却显示中文乱码,其他错误没有,iphone和ipad是同一个代码,iphone和andriod都是用string接收返回值,不知道是不是这个问题,我不懂客户端,只能想服务器端有什么错误?难道stream返回的时候又被转码了吗?在线等!

------解决方案--------------------
感觉返回Stream怪怪的,直接返回String应更简单可靠。
------解决方案--------------------
textEncoding="utf-8"两个要做到编码格式的统一
------解决方案--------------------
引用:
Quote: 引用:

textEncoding="utf-8"两个要做到编码格式的统一

也试过了,还是不行,最后回滚了~谢谢。

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

textEncoding="utf-8"两个要做到编码格式的统一

也试过了,还是不行,最后回滚了~谢谢。

因为我不懂android和iphone,而且同事也不愿意帮我搭建环境(他们好不耐烦~),所以只好不了了之~
这都可以啊
  相关解决方案