当前位置:编程学习 > C#/ASP.NET >>

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应更简单可靠。 --------------------编程问答--------------------
引用 2 楼 rtdb 的回复:
感觉返回Stream怪怪的,直接返回String应更简单可靠。

如果返回String类型,那么原来正常应该是:{"id":"1"}
就会加上转意字符:{\"id\":\"1\"},就不对了。而且据我所查,只有Stream类型WCF是不会序列化的。 --------------------编程问答-------------------- textEncoding="utf-8"两个要做到编码格式的统一 --------------------编程问答--------------------
引用 4 楼 qiujialongjjj 的回复:
textEncoding="utf-8"两个要做到编码格式的统一

也试过了,还是不行,最后回滚了~谢谢。 --------------------编程问答--------------------
引用 5 楼 osnot 的回复:
Quote: 引用 4 楼 qiujialongjjj 的回复:

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

也试过了,还是不行,最后回滚了~谢谢。
--------------------编程问答--------------------
引用 6 楼 qiujialongjjj 的回复:
Quote: 引用 5 楼 osnot 的回复:

Quote: 引用 4 楼 qiujialongjjj 的回复:

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

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

因为我不懂android和iphone,而且同事也不愿意帮我搭建环境(他们好不耐烦~),所以只好不了了之~ --------------------编程问答--------------------
引用 7 楼 osnot 的回复:
Quote: 引用 6 楼 qiujialongjjj 的回复:

Quote: 引用 5 楼 osnot 的回复:

Quote: 引用 4 楼 qiujialongjjj 的回复:

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

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

因为我不懂android和iphone,而且同事也不愿意帮我搭建环境(他们好不耐烦~),所以只好不了了之~
这都可以啊
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,