none
請教關於讀取 UTF-8 格式的問題 RRS feed

  • 問題

  • 大家好!!
    請教一下我該怎麼讀取一份用 UTF-8 格式編碼的檔案, 其檔案內容是 中英文 交雜的內容, 且我想做的是  一個字一個字的讀取 ??

    檔案內容類似 :
    happy new year 祝大家新年快樂

    我有試過用 filestream 裡的 read() 方法, read( buffer, 0,  1)  當 read() 裡的 count 參數設 1 時,讀取英文字 ok , 讀中文字就變亂碼了...

    請教一下各位,是不是有什麼方法可以做到這樣的讀取??  感謝大家!!
    2008年2月9日 上午 02:23

所有回覆

  • using (FileStream fs = new FileStream("1.txt", FileMode.Open, FileAccess.Read))
    {
        using (StreamReader sr = new StreamReader(fs, Encoding.Default))
        {
            while (sr.Peek() != -1)
            {
                MessageBox.Show(((char) sr.Read()).ToString());
            }
        }
    }

    using (FileStream fs = new FileStream("1.txt", FileMode.Open, FileAccess.Read))
    {
        using (StreamReader sr = new StreamReader(fs, Encoding.Default))
        {
            foreach (char c in sr.ReadLine())
            {
                MessageBox.Show(c.ToString());
            }
        }
    }

    using (FileStream fs = new FileStream("1.txt", FileMode.Open, FileAccess.Read))
    {
        using (StreamReader sr = new StreamReader(fs, Encoding.Default))
        {
            foreach (char c in sr.ReadToEnd())
            {
                MessageBox.Show(c.ToString());
            }
        }
    }
    2008年2月9日 上午 03:37
  • 先轉成 Unicode 字串,再用 SubString 去切,直接處理 UTF8 格式要先念編碼規則,來處理中文字 3 ~ 4 bytes 的問題,據說 Unicode 5.0 內有些罕用字編碼起來會超過 4 bytes ,這部分就沒研究過了。

     

    2008年2月9日 上午 03:51