请求页面因为不同页面不同编辑格式照成的乱码

请求一些网页时,因不同网页的编码格式不同,无法固定使用一种编码格式去请求,会出现乱码,也没发现通用的编码格式,暂时使用如下方法,请求后获取数据流,先用utf-8,这个比较普遍,如发现不是再用gb2312

/// <summary>
        /// 网址流
        /// </summary>
        /// <param name="Url"></param>
        /// <returns></returns>
        public static Stream GetWebUrlStream(string Url)
        {
            Stream stream = null;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                stream = response.GetResponseStream();
            }
            return stream;
        }

  

public ActionResult GetBaiduUrlInfo()
        {
            string url = RequestUtils.GetString("url");
            Stream stream = HttpWebRequestUntil.GetWebUrlStream(url);
            string strHtml = "";
            List<byte> lst = new List<byte>();
            int nRead = 0;
            while ((nRead = stream.ReadByte()) != -1) lst.Add((byte)nRead);
            byte[] byHtml = lst.ToArray();
            //utf8的编码比较多 所以默认先用他解码
            strHtml = Encoding.UTF8.GetString(byHtml, 0, byHtml.Length);
            //就算编码没对也不会影响英文和数字的显示 然后匹配真正编码
            string strCharSet =
                Regex.Match(strHtml, @"<meta.*?charset=""?([a-z0-9-]+)\b", RegexOptions.IgnoreCase)
                .Groups[1].Value;
            //如果匹配到了标签并且不是utf8 那么重新解码一次
            if (strCharSet != "" && (strCharSet.ToLower().IndexOf("utf") == -1))
            {
                try
                {
                    strHtml = Encoding.GetEncoding(strCharSet).GetString(byHtml, 0, byHtml.Length);
                }
                catch
                {
                }
            }
            return Json(new { html = strHtml }, JsonRequestBehavior.AllowGet);
        }

                         --谨记铭心

时间: 2024-11-08 02:22:21

请求页面因为不同页面不同编辑格式照成的乱码的相关文章

页面状态保持机制(编辑中)

在ASPX页面中,每个控件的状态,通过VIEWSTATE进行保持,但前提是必须以回调的方式进行调用.我们的很多页面处理,都是以URL调用的方式进行的,无法使用VIEWSTATE. 在上例的分页处理中,使用了URL参数来传递状态,这种传递方式简单明了,但也存在问题: 1.复杂 2.和其他方式之间的共处存在问题 特别是第二点,在分页中体现得非常明显:既要能通过URL传递,还要允许页面控制,还要能传递新的参数.要实现这一要求,只能借助复杂的处理逻辑来实现了: 这种方式,当页面还有其他参数的时候,就会很

ajax 页面请求后,jsp页面定位

如下图所示.A,B两区域为不动区域,既不随着滚动条的滚动而移动.C区域为异步加载内容区域, 在C区域中,点击查询按钮,需要异步加载查询 结果.但是查询结果会很长,这样子,就需要向下滑动滚动条,用户体验不是很好.所以决定点击查询按钮后,页面自动的向下滚动.所以使用了scrollTop 这个方法 具体代码只有一行就搞定了! 我的这个滚动条是body级别的!所以使用如下: $("body").scrollTop(450); 如果是div级别的滚动条,获取div对象.scrollTop(&qu

Bootstrap页面布局5 - 响应式布局(格式)

旨在优化不同上网设备中页面显示的优化 响应式布局:就是根据浏览窗口的尺寸,改变页面的变化 原理:利用css的media-queries判断浏览窗口的尺寸,在CSS样式表中设置一些规则! 例如: 在<style></style>标签中输入如下css3的格式实现: <style> body {background:green;} //注意这里不能写成行内样式,使用CSS样式定制样式 @media (max-width:767px) {body{background:red}

使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)

在Web Application中,有个问题就是:“我怎么来判断一个http请求到底是通过按F5刷新的请求还是正常的提交请求?” 相信了解ASP.NET的人知道我在说什么,会有同感,而且这其实不是一个很easy的问题.那是因为HTTP协议无状态的特性不允许请求之间保持状态. 我想大多数人关注这个问题是因为,页面post的时候或之后,不想浏览器重复提交. 所以问题可以简化为:“我怎么来判断一个POST请求到底是由F5按钮触发的还是正常的页面交互?” 幸运的是,这时候DOM的一个简单细节可以用来解决

———— JSP页面用EL表达式 输出date格式 ————

JSP页面用EL表达式 输出date格式 1.头上引入标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 2.使用: <fmt:formatDate value="${proje

B/S请求响应,及页面渲染的过程

B/S请求响应,及页面渲染的过程 概念 B 是 Browser, S是服务器.B/S是动态.增量的加载资源的过程. C/S架构和B/S架构开发区别: 相同点 :都会有开发.发布.运行的过程 不两点:C/S架构发布的是一个包(andorad是一个.apk包),安装在设备上,运行时数据有一些是在.apk上的.而B/S架构发布:是将源代码放在webServer上,数据放在CDN上.运行时,由浏览器发布一个请求,服务器运行程序返回数据到浏览器上的. 一个html从浏览器发送请求.服务器返回数据的工作过程

WordPress无法新发布文章和页面,提示您正在编辑展示最新文章的页面

WordPress发布新文章和页面时显示“您正在编辑展示最新文章的页面.” 最近由用户遇到了这个问题,正常编辑文章时,数据库卡死,重启服务器之后,点击新发布文章,主编辑器消失,并提示“您正在编辑展示最新文章的页面.” 进入到发布新文章或者新页面时,顶部还有一个报错:Creating default object from empty value 当你点击发布文章时会有提示:您没有修改这篇文章的权限. 经过一番查阅资料,目前这个问题已经解决,由于此问题不是很常见,因此资料会比较少,在此我们将解决方

静态页面和动态页面的区别

一.静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容.之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果. 2.为了让静态web页面显示更加好看,使用javascript/VBScript/

浏览器渲染页面和加载页面机制

为什么有些网站打开的时候会加载会很慢,而且是整个页面同时显示的,而有些网站是从顶到下逐步显示出来的?要搞懂这个可以先从下面这个常规流程开始: 1. 浏览器下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的. 2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完). 3. 如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载. 4. 并且在下载后进行解析,解析过程中,停止页面所有往下