将byte []转换为带字符串的字符串C#中的编码

时间:2014-08-22 05:20:22

标签: c#-4.0 windows-phone-8

我是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中编码的。)

3 个答案:

答案 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();

实际上,我不知道为什么我的代码有效:(不管怎样,谢谢你!