网站排名
RSS订阅 | 匿名投稿
您的位置:网站首页 > 网站优化 > 正文

建站直接抓取网页asp乱码问题

作者:福州seo推广 来源:seo.838766.com 日期:2013-1-15 11:25:28 人气: 标签:

    '转换编码函数
Function BytesToBstr(Body,Cset)
 Dim Objstream
 Set Objstream = Server.CreateObject("adod"&"b.stream")
 Objstream.Type = 1
 Objstream.Mode =3
 Objstream.Open
 Objstream.Write body
 Objstream.Position = 0
 Objstream.Type = 2
 Objstream.Charset = Cset
 BytesToBstr = Objstream.ReadText
 Objstream.Close
 set Objstream = nothing
End Function


    dim stream
    set stream = Server.CreateObject("ADODB.Stream")
    stream.mode = 3 '1-读,2-写,3-读写
    stream.type = 1 '1-二进制,2-文本
    stream.Open
    dataStream.position = index
    dataStream.CopyTo stream, count '将另一 Stream 对象 dataStream 从 index 到 index+count 的数据拷贝到 stream
    stream.SaveToFile filePath, 2 '将 stream 数据保存为文件,第二个参数:1-不允许覆盖,2-覆盖写入
    stream.Close
    set stream = nothing
    常用属性和方法
    mode 读写模式,可选值:1-读,2-写,3-读写,其它不常用
    type 数据类型,可选值:1-二进制,2-文本
    charset 编码方式,可选值:ascii,gb2312
    position 数据流位置,表示数据操作从这里开始,第一个位置的值为 0,不是 1。
    size 数据流大小(字节)
    LoadFromFile 从文件读取数据到 Stream 对象,Stream 对象原有内容将被清空
    SaveToFile 将 Stream 对象数据保存为文件,第二个参数:1-不允许覆盖,2-覆盖写入
    Open 打开数据流
    Close 关闭数据流
    Read([长度]) 从 Stream 对象中读取二进制数据,不指定长度表示全部读取
    ReadText([长度]) 从 Stream 对象中读取文本数据,不指定长度表示全部读取
    Write(buffer) 将缓存数据写入 Stream 对象
    WriteText(data, [option]) 将文本数据写入 Stream 对象,第二个参数:0-字符写入,1-行写入
    CopyTo(destStream, count) 将 Stream 对象的指定数据拷贝到 destStream


ASP.NET的乱码问题一般与二个因素有关:
1. 选择了不恰当的字符编码,如:gb2312
2. 选择了不正确的URL编码方法,如:escape()

因此,解决方案其实也不难:
1. 字符编码选择 utf-8 ,包含文件编码,请求/响应编码,数据库字段类型。
2. URL编码方法选择encodeURIComponent,再次强烈推荐直接使用JQuery

我一直认为:正确的方法可以让我在无形中避开许多问题。
如果你还为乱码问题而烦恼,我建议你先想想你是否选择了不正确的编码(方法)。

 

今天用vs2005把几个html文件弄成aspx格式的文档,不料浏览时变成了乱码,必须选择"编码"为gb2312才能正确显示.
解决方法如下:
在web.config加入:
<configuration>
<location>
<system.web>
<globalization
requestEncoding = "gb2312"
responseEncoding = "gb2312"
/>
</system.web>
</location>
</configuration>
OK.
此外,附加几篇解决asp.net中文乱码的方案:
1.页面<head>添加
http-equiv="Content-Type" content="text/html; charset=gb2312"

2.utf-8未加标志
Windows为了识别Unicode、Unicode big endian和UTF-8,在Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FFFE(Unicode),FEFF(Unicode big endian),EFBBBF(UTF-8)。而某些用UTF-8编码保存的文件是标准的未加标识的。(EditPlus默认好像就是不加的,是需要时添加,这次我改成了总是添加.)

vs2005的编辑器保存文件是用UTF-8来保存的.默认不自动检测是否缺少标志,所以要在
“文本编辑器”->“常规”->自动检测不带签名的UTF-8编码,选上。

3.下载文件时指定文件名,中文的文件名出现了乱码? Response.AddHeader("Content-Disposition", "attachment; filename="+HttpUtility.UrlEncoding(filename.ToString ()));
4.
为什么文件读出来的中文字符是乱码?

System.IO.StreamReader m_fs = System.IO.File.OpenText(Hfile_SelectFile.Value);
改为
System.IO.StreamReader m_fs = new System.IO.StreamReader(Hfile_SelectFile.Value,System.Text.Encoding.GetEncoding("gb2312"));

5.JMAIL 发邮件附件或者没有或者在正文中是乱码

6.怎么解决查询字符串中文乱码问题?

查询内容用Server.UrlEncode编码

string url ="http://url"+ Server.UrlEncode("张三");

-->Server.UrlDecode()

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址: