locked
请问 WebRequest在GPRS连接下,有的时候返回的是乱码,请问怎么解决 RRS feed

  • 问题

  • 如题,在wifi连接下完全没有问题,并且编码是正确,网站是GB2312,我程序中也是用的GB2312。

    这个问题不定时出现,我不知道什么原因造成的,很郁闷~~~~

    请大家帮帮忙!

    2012年7月4日 8:38

答案

  • 产生的原因打开是找到了,和你们说的不一样,我用的是一个叫GzipExtensions这个类来解析GZIP的数据,并且wifi下面完全正常,GPRS下非常少量用户不正常,也就是排除了GZIP的问题,我感觉应该是有些用户的上网套餐使用的是wap方式上网,webrequest提交的时候user-agent默认采用的手机的,wap服务器接收到手机的请求,并且根据user-agent来判断是手机,返回的内容就成了wap版本的了,而wap版本的网站一般采用的UTF-8,我客户端采用的是GB2312,所以造成了乱码,现在解决办法就是使用桌面版的user-agent,这样返回的就是桌面版的内容,编码也就统一了。按照这个思路,我修改了一个程序发给乱码的用户,用户使用了2天多了,还未出现乱码,所以应该是这个原因。

    • 已标记为答案 Otomii Lu 2012年7月10日 2:41
    2012年7月7日 15:27

全部回复

  • 这和gprs没关系的吧?难道你用wifi就没这问题?

    请看看

    Windows Phone开发经验谈(2)-GB2312编码转换

    这篇文章 希望对你有帮助!

    2012年7月4日 8:44
  • wifi完全没有问题,用户反馈的都是非wifi的情况下面的,并且同一个网页,A用户正常,B用户就是乱码,感觉不是GB2312的问题哦

    并且我使用也是你发的网站的那个GB2312解析代码

    • 已编辑 andy-zl 2012年7月4日 8:55
    2012年7月4日 8:51
  • 你是post吗? 是返回了gzip了吧。。。
    2012年7月5日 3:35
  • 使用的是GET,并且已经使用gzip类解析返回的GZIP数据,我感觉应该是有些用户使用的wap上网,wp对wap网络兼容性不好造成的,现在我把请求中的user-agent全部改成了桌面版的,看看还会不会有乱码
    2012年7月5日 3:50
  • 你好,

    这个跟用户的设置有关。例如如果他的客户端浏览器使用UTF-8解码而页面内容是GB2312编码那就不能正常显示。一般来说所有的网站建议都用UTF-8编码。这样在不同平台和客户端设置的情况下通常都有最好的效果。

    另外也有可能是用户使用的一些HTTP proxy对非UTF-8编码的内容支持不好所导致的。总的来说均建议考虑用UTF-8编码。

    如果有一台能够重现问题的机子的话可以写一些代码把返回内容传到一个服务器上分析一下。看看是收到的内容不对还是其他原因。


    Allen Chen [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2012年7月5日 6:28
  • 你好,

    这个跟用户的设置有关。例如如果他的客户端浏览器使用UTF-8解码而页面内容是GB2312编码那就不能正常显示。一般来说所有的网站建议都用UTF-8编码。这样在不同平台和客户端设置的情况下通常都有最好的效果。

    另外也有可能是用户使用的一些HTTP proxy对非UTF-8编码的内容支持不好所导致的。总的来说均建议考虑用UTF-8编码。

    如果有一台能够重现问题的机子的话可以写一些代码把返回内容传到一个服务器上分析一下。看看是收到的内容不对还是其他原因。


    Allen Chen [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.



    这个WebRequest请求是我发出的,网站是GB2312,客户端解析也是用的GB2312, 并且WIFI下面全部是正常的,只有很少部分的GPRS用户有时得到的数据是乱码。
    2012年7月5日 7:02
  • 我遇到过,如果包含这样的语句req.Headers["Accept-Encoding"] = "gzip";

    用移动网络会出现乱码是因为服务器压缩的原因...

    2012年7月5日 8:19
  • 我遇到过,如果包含这样的语句req.Headers["Accept-Encoding"] = "gzip";

    用移动网络会出现乱码是因为服务器压缩的原因...


    你怎么解决的呢?我这边也有可能是这种原因
    2012年7月5日 13:19
  • 你好,

    请检查一下返回的HTTP头http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/5444c4b0-87c6-4bba-bc48-2a241b9571ab/,如果说明是Content-Encoding: gzip就需要自己先decompression然后在用其数据。

    http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/4cc857b4-ef65-4c81-8e32-631c87304512/


    Allen Chen [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年7月6日 1:40
  • 如 Allen Chen - MSFT  所说判断是否是压缩流

    如果是的话就要解压...

    这种方法你会觉得比较麻烦,最简单的就是去掉req.Headers["Accept-Encoding"] = "gzip" 这句话

    2012年7月7日 9:05
  • 产生的原因打开是找到了,和你们说的不一样,我用的是一个叫GzipExtensions这个类来解析GZIP的数据,并且wifi下面完全正常,GPRS下非常少量用户不正常,也就是排除了GZIP的问题,我感觉应该是有些用户的上网套餐使用的是wap方式上网,webrequest提交的时候user-agent默认采用的手机的,wap服务器接收到手机的请求,并且根据user-agent来判断是手机,返回的内容就成了wap版本的了,而wap版本的网站一般采用的UTF-8,我客户端采用的是GB2312,所以造成了乱码,现在解决办法就是使用桌面版的user-agent,这样返回的就是桌面版的内容,编码也就统一了。按照这个思路,我修改了一个程序发给乱码的用户,用户使用了2天多了,还未出现乱码,所以应该是这个原因。

    • 已标记为答案 Otomii Lu 2012年7月10日 2:41
    2012年7月7日 15:27
  • 解决就好!
    2012年7月9日 2:49