作者cole945 (躂躂..)
看板C_Sharp
标题Re: [问题] 关於撷取所有原始码
时间Wed Sep 26 01:07:22 2007
假设你是用 WebClient 抓了一个网页下来
WebClient client = new WebClient();
byte[] data = client.DownloadData("
http://www.google.com");
/* 在这里用某种神奇的方法侦测他是什麽编码,
ie, 取得他的 charset, 预设是 iso-8859-1 */
// 假装侦测到为 Big5 编码, 把该 byte[] 转回 (UTF-16LE编码的)String
string content = Encoding.GetEncoding(950).GetString(data);
--
至於该怎麽找出 charset 的资料...
因为大部份的编码在数字(0-9)、字母(a-zA-Z)及大部份符号和ANSII相容..
比如说 'A' 在大部份的编码都被编成单byte(65), 所以
你可以直接当 ANSII 转成 String 来寻找 charset 的值,
甚至可直接对该 byte[] 搜寻 charset 效率会更好 (要注意大小写问题)
而utf-16,utf-32等编码和ANSII编出来的不太一样,无法用上述方法搜寻,
不过通常这种编码的文件会在文件开头加上 BOM, 你可以先检查是否存在BOM资讯..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.186.225