Re: [問題] WP8.1開發HttpClient亂碼

看板WindowsPhone作者 (lin)時間11年前 (2014/07/13 22:17), 編輯推噓5(504)
留言9則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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 這樣讀出來的中文就不是亂碼了 如果有遇到類似問題的可以試看看~謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.87.167 ※ 文章網址: http://www.ptt.cc/bbs/WindowsPhone/M.1405261039.A.DE9.html

07/13 22:21, , 1F
我總記得不用特別裝編碼的套件..不過code忘了放哪去了..
07/13 22:21, 1F

07/13 22:23, , 2F
其實沒關係,反正這個 nuget 套件支援 PCL ,就算移植
07/13 22:23, 2F

07/13 22:23, , 3F
到Win8也沒差XD
07/13 22:23, 3F

07/13 22:32, , 4F
後來試了System.Text.Encoding去轉,的確也可以轉出正確
07/13 22:32, 4F

07/13 22:32, , 5F
的中文字串
07/13 22:32, 5F

07/14 05:25, , 6F
你測試過8.0也可以用內建轉碼,不用另外裝嗎?
07/14 05:25, 6F

07/14 10:08, , 7F
是什麼情況會亂碼呀?自己沒遇過@@
07/14 10:08, 7F

07/14 12:18, , 8F
語系不同的時候會亂吧 例如用HtmlAgilityPack
07/14 12:18, 8F

07/14 17:11, , 9F
網頁是 big5 或是GB簡體編碼的時候XD
07/14 17:11, 9F
文章代碼(AID): #1JmfJltf (WindowsPhone)
討論串 (同標題文章)
文章代碼(AID): #1JmfJltf (WindowsPhone)