Re: [問題] 關於擷取所有原始碼
假設你是用 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
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章