http://time-is-life.cnblogs.com/articles/331969.html
解决方案 »
- vs2010 <asp:buttion 如何 调用本页面的javascript函数
- Gridview编辑状态无法取消,并且出现”未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于保存视图状态的控件树相匹配“错误
- 问什么关闭弹出的对话框后原来界面的输入框变化?
- 急求一个简单易用的分页程序!
- 高深问题,找了很久没有答案。
- 简单问题:我下载了一个ASP.NET开发的论坛,用的是ACCESS数据库,我把这个文件夹解压缩到C:\BBS,请问怎样在我的机器上调试这套程序??
- 导入excel表,总说找不到ISAM?(急)
- 如果合并这个Excel单元格问题
- Url重写规则,删除后 不能正确访问纯html页面?
- ~~~~~请帮我看看,为什么不能用Behind~~~~~~
- 100分.求教 在线等.......谢谢各位了.
- 请教 .net入门?
我用 xmlHttp.setRequestHeader("Content-Type", "text/html;charset=UTF-8");
或者用
xmlHttp.setRequestHeader("Content-Type", "text/html;charset=gb2312"); 返回的都是乱码
因为在服务器端用xmlHttp的时候,返回的responseText已经是string类型的
但是里面的汉字都是乱码,所以现在的问题是怎么样把这些乱码转换成正常的汉字
或者直接返回的就是正常的汉字
————————————————————————————————————
想开发类似于AJAX的可直接编辑数据、可直接打印、可无刷新从服务器存取数据的报表吗?那就用lgxgrid表格控件吧!欢迎试用lgxgrid表格控件,内置强大的编辑、格式控制和打印功能,内置通过XML与WebService服务交换数据的便捷方法(开发基于B/S的WEB应用程序很有用),有详尽的中文帮助文档,有基于VB6、C#、ASP.net、VC++的例程!欢迎访问http://lgxyslldw.512j.com
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n<meta http-equiv=\"content-language\" content=\"gb2312\" />\n<title>网易</title>\n<style type=text/css>\n<!--\nhtml {min-width:750px;}\nbody {text-align:center; margin:0px;}\nbody > div {text-align:center; margin-right:auto; margin-left:auto;} \nform, input, select {margin:0px; padding:0px;}\nbody, div {font-size:12px; font-family:宋体;}\nimg,a img{border:0; margin:0; padding:0;}\ninput,select{font-size:12px;vertical-align:middle}\ninput{padding-top:2px}\na {color:#00f; text-decoration:underline;}\na:hover {color:#f00;}\n.red{color:red}\n.green{color:green}\nsup{text-decoration:none}\n\n#UrsLogin, #LogoNav, #Column70,#Column30, #Content1, #Content2, #Column120, #bNav, #Copyright {clear:both; width:750px;height:auto;}\n\n/*=====urs登陆口=====*/\n#UrsLogin {border:1px solid #ccc; background:#EBEBEB; padding:2px; width:744px!important; width /**/:750px; height:22px!important; height /**/:28px;}\n#userName,#password{width:73px}\n#userName{color:#aaa}\n#loginSelect{width:90px}\n\n/*=====网易Logo & 频道导航=====*/
可是http://www.sohu.com
http://www.tom.com
http://www4.skycn.com/sort/sort020000_indate_DESC_1.html
等等大部分网页都是乱码,这是为什么那?
————————————————————————————————————
想开发类似于AJAX的可直接编辑数据、可直接打印、可无刷新从服务器存取数据的报表吗?那就用lgxgrid表格控件吧!欢迎试用lgxgrid表格控件,内置强大的编辑、格式控制和打印功能,内置通过XML与WebService服务交换数据的便捷方法(开发基于B/S的WEB应用程序很有用),有详尽的中文帮助文档,有基于VB6、C#、ASP.net、VC++的例程!欢迎访问http://lgxyslldw.512j.com
另外你在发出请求的时候指定 xmlHttp.setRequestHeader("Content-Type", "text/html;charset=gb2312"); 这个没什么意义,还是要看服务端返回给你的是什么编码的,可以通过读取返回的header中的Content-Type来获取服务端返回来的编码,然后根据这个编码来构造相应的读取器.
另外,你如果要抓网页的话,建议采用HttpWebRequest来获取网页,HttpWebRequest是dotnet内建的类,然后将抓来的网页用Sgml转换为xml友好的格式,就可以使用XmlDocment就行分析处理了.
>出现乱码!XP以上的版好些。请你使用新的版本!最好3.0以上我试验了一下msxml5.0,结果还是出现乱码.>xmlHttpRequest编码转换一下,decoding=default对于下面的代码:MSXML2.XMLHTTPClass xmlHttp; //用于发送Http请求的MSXML2.XMLHTTPClass类型的变量
xmlHttp = new MSXML2.XMLHTTPClass();
//设置http请求的参数
xmlHttp.open("GET" , url , false , null , null );
xmlHttp.setRequestHeader( "Accept-Lauguage" , "zh-cn" );
xmlHttp.setRequestHeader("Content-Type", "text/html;charset=gb2312");
//发送http请求
xmlHttp.send( null );
if( xmlHttp.status == 200 )
{ //请求成功
Response.Write(xmlHttp.responseText);
}
else
{ //请求失败
Response.Write("请求失败");
}在哪里设置decoding=default阿>很奇怪,http://www.sohu.com和http://www.tom.com跟 163.com一样都是gb2312的编码,
>不应该不一样啊.确实不一样,有的网站返回汉字,有的网站就使乱码或者一大堆问号
>另外你在发出请求的时候指定 xmlHttp.setRequestHeader("Content-Type", "text/html;charset=gb2312");
>这个没什么意义,还是要看服务端返回给你的是什么编码的,可以通过读取返回的header中的
>Content-Type来获取服务端返回来的编码,然后根据这个编码来构造相应的读取器.我用了
string header = "";
...
header = xmlHttp.getResponseHeader( "Content-Type" );
Response.Write( header );发现tom, sohu,csdn,sina,163等网站返回的都是text/html.
然后我把请求中的一句改成这样:xmlHttp.setRequestHeader("Content-Type", "text/html"); 然后post网页,结果还是一样,163,csdn返回的是中文,sina,sohu,tom返回的都是乱码>另外,你如果要抓网页的话,建议采用HttpWebRequest来获取网页,
>HttpWebRequest是dotnet内建的类,我用了下面的代码://变量定义
string respstr;WebRequest myWebRequest=WebRequest.Create(url);// Assign the response object of 'WebRequest' to a 'WebResponse' variable.
WebResponse myWebResponse=myWebRequest.GetResponse();
System.IO.Stream stream = myWebResponse.GetResponseStream();
StreamReader sr = new StreamReader(stream);
//以字符串形式读取数据流
respstr = sr.ReadToEnd();
sr.Close(); return respstr;结果csdn返回的是中文,163,sina,tom,sohu返回的都是乱码
>然后将抓来的网页用Sgml转换为xml友好的格式,就可以使用XmlDocment就行分析处理了.Sgml也是一种文件格式,怎么样利用sgml转换成友好的格式阿,能否给具体一点的提示
另外我现在得到的是乱码,好像用sgml也不奏效吧
我看了一下,tom、sina、sohu都是<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
csdn是:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />>>StreamReader sr = new StreamReader(stream);
这里有问题,StreamReader默认的编码都是UTF-8,如果你不指定编码就是使用默认的UTF-8行解码,所以你看到的结果是csdn的没有乱码(就它使用的是UTF-8编码),别的都乱了。这里要用StreamReader(Stream stream,Encoding encoding)这个构造方法,指定流的编码,这里的encoding就是具体你抓到网页的编码,使用返回网页的Content-Type获知网页使用的编码,时候使用相应的Encoding去构造StreamReader就ok了>>Sgml也是一种文件格式,怎么样利用sgml转换成友好的格式阿,能否给具体一点的提示
另外我现在得到的是乱码,好像用sgml也不奏效吧
这里我写错了,应该是SgmlReader,一个转换成xml友好格式的开源组件。