Windows Phone 7 中將Gb2312編碼轉換成UTF-8

l_serein發表於2012-11-28

相信大家在使用一些網站提供的API的時候會發現他們提供的API的編碼是GB2312的,而wp7並不支援。

前一陣子我在做一個應用的時候也遇到了這個問題。群裡的一個大大提供了兩個類幫忙解決了這個問題。

/Files/Angle-Louis/GB2312相關的編碼類.rar

那麼如何使用這兩個類呢?

比如您使用了Webclient從網路上獲取資源,那麼在Client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)函式中

 

                byte[] txtBytes = StreamToBytes(e.Result);
                Gb2312Encoding encoding = new Gb2312Encoding();
                string str1 = encoding.GetString(txtBytes, 0, txtBytes.Length);
                byte[] uftBytes = Encoding.UTF8.GetBytes(str1);
                //System.Convert.FromBase64String(str1);
                Stream utfStream = BytesToStream(uftBytes);
                using (StreamReader UtfReader = new StreamReader(utfStream))
                {
                    string Result = UtfReader.ReadToEnd();
                    //這裡已經是Utf-8的編碼了
                }
 

 

        public byte[] StreamToBytes(Stream stream)
        {
            byte[] bytes = new byte[stream.Length];
            stream.Read(bytes, 0, bytes.Length);

            // 設定當前流的位置為流的開始 
            stream.Seek(0, SeekOrigin.Begin);
            return bytes;
        }
        public Stream BytesToStream(byte[] bytes)
        {
            Stream stream = new MemoryStream(bytes);
            return stream;
        }

 

相關文章