C# 4.0 将字节[]转换为C中字符集编码的字符串#
我是Windows phone 8开发人员和C#新手。我尝试从远程服务器获取字符串。这是我的代码:C# 4.0 将字节[]转换为C中字符集编码的字符串#,c#-4.0,windows-phone-8,C# 4.0,Windows Phone 8,我是Windows phone 8开发人员和C#新手。我尝试从远程服务器获取字符串。这是我的代码: var client = new HttpClient(); var response = await client.GetAsync(MyUrl); string charset = GetCharset(response.Content.Headers.ContentType.ToString()); Debug.WriteLine("charset: " + charset)
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编码的)。您可以使用staticGetEncoding
方法请求特定的代码页。
e、 g:
Encoding.UTF8应该正确解释数据,因为ISO-8859-1是UTF-8的子集。但是,为了透明地处理其他编码,最好使用方法而不是ReadAsByteArrayAsync()
我怀疑您的字符串是正确的,但调试窗口无法正确显示这两个unicode字符。最终我找到了解决方案。使用Json.Net从远程服务器解析Json后,我的问题消失了,我可以得到预期的结果:
JArray jArray = JArray.Parse(isoText);
String exptectedText= jArray[1].ToString();
事实上,我不知道我的代码为什么能工作:(无论如何,谢谢!我在真实设备中使用了ReadAsStringAsync()
,但我显示的结果与调试结果相同。
JArray jArray = JArray.Parse(isoText);
String exptectedText= jArray[1].ToString();