Windows Phone 7 中将Gb2312编码转换成UTF-8

相信大家在使用一些网站提供的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;
        }

 

好了,这样就可以将GB2312编码转化成UTF-8编码了。

 

 

 

 

 

 

 

 

 

posted @ 2012-03-24 10:06  Arthars  阅读(1053)  评论(10编辑  收藏  举报