Re: [問題] 關於擷取所有原始碼

看板C_Sharp (C#)作者 (躂躂..)時間18年前 (2007/09/26 01:07), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/6 (看更多)
假設你是用 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
文章代碼(AID): #16-K1BOV (C_Sharp)
文章代碼(AID): #16-K1BOV (C_Sharp)