我是Windows手机8 Dev和C#的新手。我尝试从远程服务器获取String。这是我的代码:
var client = new HttpClient();
var response = await client.GetAsync(MyUrl);
string charset = GetCharset(response.Content.Headers.ContentType.ToString());
Debug.WriteLine("charset: " + charset); \\debug show: charset: ISO-8859-1
var bytesCharset = await response.Content.ReadAsByteArrayAsync();
Debug.WriteLine(Encoding.UTF8.GetString(bytesCharset,0,bytesCharset.Length));
//Debug show: `m\u1EF9 t�m`
m\u1EF9 t�m
就是我得到的,但我希望它是越南人:Mỹ Tâm
。任何人都可以给我一个想法,以获得预期的结果? (我认为字节是在IOS-8859-1中编码的。)
答案 0 :(得分:1)
Encoding.UTF8应正确解释您的数据,因为ISO-8859-1是UTF-8的子集。但是,为了透明地处理其他编码,最好使用HttpContent's ReadAsStringAsync()方法而不是ReadAsByteArrayAsync()。
我怀疑你的字符串是正确的,但你的调试窗口根本无法正确显示这两个unicode字符。
答案 1 :(得分:0)
您可以使用静态GetEncoding
方法来请求特定的代码页。
e.g:
var encoding = Encoding.GetEncoding("ISO-8859-1");
答案 2 :(得分:0)
最后我找到了解决方案。使用Json.Net从远程服务器解析json后,我的问题消失了,我可以得到预期的结果:
JArray jArray = JArray.Parse(isoText);
String exptectedText= jArray[1].ToString();
实际上,我不知道为什么我的代码有效:(不管怎样,谢谢你!