HttpWebRequest乱码_unity http 发送的数据不是utf8-程序员宅基地

技术标签: .net  

记得有一个项目获取json数据。

使用浏览器获取是乱码,采用 UTF-8 编码则正常,则使用HttpWebRequest进行请求,采用了以下二种方式都无法进行正常编码

                string sRet = "";

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                request.Method = "GET";
                
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                //WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();
                

                //第一种方式
                byte[] buf = new byte[1024];
                while (true)
                {
                    int len = stream.Read(buf, 0, buf.Length);
                    if (len <= 0)
                        break;
                    sRet += System.Text.Encoding.GetEncoding("UTF-8").GetString(buf, 0, len);
                }


               //第二种方式

               if (stream != null)
                {
                    Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
                    StreamReader read = new StreamReader(stream, encode);
                    return read.ReadToEnd();
                }


以为完美收工,一经测试,还是乱码。

奇怪了,怎么一直乱码,不科学啊,经过查看 response的header,发现了返回的数据是采用gzip压缩的方式。

难怪以上二种常用的方式都是乱码,因为我们是对 gzip 压缩后的进行编码,所以要先解压再转码。

改进 StreaReader 读取数据流的方式。

StreamReader read = new StreamReader(new GZipStream(stream,CompressionMode.Decompress), encode);

要对读取到数据流进行解压。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xcmonline/article/details/53905952

智能推荐

Android Bluedroid HFP 代码流程_android连接hfp代码-程序员宅基地

文章浏览阅读931次,点赞23次,收藏24次。\alps\frameworks\base\services\java\com\android\serverSystemServer.java,BluetoothManagerServices.java,BluetoothSBluetooth.h, bt_hf.h,bt_hf_client.h, bt_av.h,Bt_sock.h, bt_hh.h, bt_hl.h,bt_pan.h, bt_mce.h, bt_gatt.h,bt_rc.h, bt_sdp.hbtif_core.c, bluetooth.c_android连接hfp代码

如何检查python的库是否安装成功_查看某个python库是否安装成功-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏5次。查看自己有没有安装好python库,最简单的办法在可以再控制台下使用import语句测试C:\Users\sony>pythonPython 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for m..._policycoreutils-python-utils 查看是否安装

详解Unity的几种移动方式实现_unity 移动-程序员宅基地

文章浏览阅读1.1w次,点赞51次,收藏202次。最近在学习如何制作 FPS 游戏,学习了如何使用角色控制器来控制角色的移动跳跃等等,结合之前学到的使用 transform,刚体等使物体移动,不同的移动方式适用于不同的场景,今天就来简要盘点一下各种移动方式以及其优劣之处,若有不对之处,请多多指教。..._unity 移动

pytorch数据选择CPU或者GPU_pytorch 1.13.1 py3.7_cpu_0 pytorch-程序员宅基地

文章浏览阅读1.7k次。pytorch中.to(device) 和.cuda()的区别说明原理.to(device) 可以指定CPU 或者GPU 1 2 3 4 5 6 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 单GPU或者CPU model.to(device) #如果是多GPU if torch.cuda.device__pytorch 1.13.1 py3.7_cpu_0 pytorch

springboot整合jsp和ThymeLeaf_spring boot项目中有jsp thymeleaf-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏4次。一、首先添加依赖: &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependen..._spring boot项目中有jsp thymeleaf

关闭单片机有源蜂鸣器驱动及有效编程方法_有源蜂鸣器如何关闭-程序员宅基地

文章浏览阅读469次。总结起来,关闭有源蜂鸣器的基本思路是通过设置GPIO口的状态来控制驱动电路的输入信号。具体的实现方法可能因单片机型号和硬件电路的不同而有所差异,但核心的原理和思路是相似的。有源蜂鸣器通常由一个振荡器和驱动电路组成,振荡器产生频率,驱动电路将振荡器的信号放大并输出到蜂鸣器。请注意,上述代码是针对基于8051系列单片机的示例,如果您使用的是其他型号的单片机,或是其他类型的蜂鸣器驱动电路,请根据您的具体情况进行相应的修改。在上述代码中,我们假设有源蜂鸣器连接到单片机的P1.0口,使用了。_有源蜂鸣器如何关闭

随便推点

php 反序列化 ctf,Bugku CTF 反序列化-程序员宅基地

文章浏览阅读548次。反序列化php反序列化漏洞又称对象注入,可能会导致远程代码执行(RCE)个人理解漏洞为执行unserialize函数,调用某一类并执行魔术方法(magic method),之后可以执行类中函数,产生安全问题。所以漏洞的前提:1)unserialize()函数变量可控2)存在可利用的类,类中有魔术方法右键查看源码image.png构造读出hint.phpimage.png解码base64class ..._=hint.php f1a9.php

李开复成长中的10句格言:求知若饥 虚心若愚_乔布斯的“热情理论”-程序员宅基地

文章浏览阅读612次。创新工场董事长兼首席执行官李开复在西北农林科技大学以《促我成长的十条箴言》为题,用平实而不失幽默的语言,讲述了自己的很多故事,与7000余名学子一同分享自己成长过程中获得成功时的激动与喜悦,经历困难与挫折时的蹉跎与彷徨,为青年学子指点人生———1、“自信不失谦虚,谦虚不失自信。”李开复讲道,小时候,当他拿着90分的考卷回家,却被妈妈结结实实打了一顿。妈妈生气地告诫他,打你不是因为成绩不好,而是太自大。从此,他就记下了这个教训并受益终身———自信,但_乔布斯的“热情理论”

MAC常用快捷键_macbook自动换行快捷键-程序员宅基地

文章浏览阅读258次。Ctrl+A:到行首(达到Home键的效果)Ctrl+E:到行尾(达到End键的效果)Ctrl+N:到下一行Ctrl+P:到上一行Ctrl+K:从光标处开始删除,直到行尾fn键+左方向键是HOMEfn键+右方向键是ENDfn+上方向键是page upfn+下方向键是page down..._macbook自动换行快捷键

《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (4)_华清远见 五子棋-程序员宅基地

文章浏览阅读3.1k次。经过一段时间的C++和QT的学习,打算好好的改造一下前面的C++五子棋游戏_华清远见 五子棋

【C语言进阶】C语言实现通讯录_怎么用c语言初始化一个通讯录-程序员宅基地

文章浏览阅读2.6k次,点赞12次,收藏30次。我们需要用C语言模拟一个通讯录可以用来存储1000个人的信息每个人的信息包括姓名、电话、性别、住址、年龄功能包括: 1.新增联系人 2.查找联系人 3.删除联系人 4.修改联系人 5.查看所有联系人 6.以名字排序所有联系人_怎么用c语言初始化一个通讯录

gcc编译C语言文件过程_gcc编译c文件-程序员宅基地

gcc编译C语言文件过程,包括创建、编辑源文件,生成可执行文件,以及静态连接的过程。

推荐文章

热门文章

相关标签