Re: [问题] WP8.1开发HttpClient乱码

楼主: linlts823 (lin)   2014-07-13 22:17:17
※ 引述《linlts823 (lin)》之铭言:
: 最近尝试写wp的app遇到了问题
: 用httpclient取得json资料时,
: 若资料中包含中文会变成乱码
: 爬了版上的文章,有一篇的推文有提到要去nuget装library来做encode/decode
: 于是我就装了一个叫做 portable.text.encoding 的套件
: 但是还是不知道怎么把乱码变回正确的资料
: 试了把乱码资料透过那个套件转回byte array再用big5转回string可是没有用
: 有没有前辈能够指导一下? 谢谢~
来自问自答一下好了XD
一开始我用HttpClient的GetStringAsync得到的字串中文会变成乱码
想要先得到byte array再选择编码转成字串,却又找不到GetByteArrayAsync之类的方法
后来才发现之前写Windows.Web.HttpClient跟System.Net.HttpClient的方法不太一样
以下是我的解决方法:
1. 用NuGet安装Portable.Text.Encoding套件
2. 用HttpClient的GetBufferAsync取得Content的IBuffer物件
3. 用Windows.Storage.Streams.DataReader.FromBuffer取得DataReader
4. 用DataReader的ReadBytes就可以取得Byte Array Data
5. 用Portable.Text.Encoding.UTF8.GetString取得String Data
这样读出来的中文就不是乱码了
如果有遇到类似问题的可以试看看~谢谢~
作者: felaray (傲娇鱼)   2014-07-13 22:21:00
我总记得不用特别装编码的套件..不过code忘了放哪去了..
作者: Kelunyang (可伦)   2014-07-13 22:23:00
其实没关系,反正这个 nuget 套件支援 PCL ,就算移植到Win8也没差XD
楼主: linlts823 (lin)   2014-07-13 22:32:00
后来试了System.Text.Encoding去转,的确也可以转出正确的中文字串
作者: Kelunyang (可伦)   2014-07-14 05:25:00
你测试过8.0也可以用内建转码,不用另外装吗?
作者: hungys (hungys)   2014-07-14 10:08:00
是什么情况会乱码呀?自己没遇过@@
作者: felaray (傲娇鱼)   2014-07-14 12:18:00
语系不同的时候会乱吧 例如用HtmlAgilityPack
作者: Kelunyang (可伦)   2014-07-14 17:11:00
网页是 big5 或是GB简体编码的时候XD

Links booklink

Contact Us: admin [ a t ] ucptt.com