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编码了。

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(windows phone)