Bar*_*rka 4 .net c# unicode utf-8 streamreader
Facebook图形API将用户的电子邮件地址返回给我
foo\u0040bar.com.
在JSON对象中.我需要将其转换为
foo@bar.com.
.NET中必须有一个内置方法,可以将Unicode字符表达式(\ u1234)更改为实际的unicode符号.
你知道这是什么吗?
注意:我不希望使用JSON.NET或JavaScriptSerializer来解决性能问题.
我认为问题出在我的StreamReader中:
requestUrl = "https://graph.facebook.com/me?access_token=" + accessToken;
request = WebRequest.Create(requestUrl) as HttpWebRequest;
try
{
using (HttpWebResponse response2 = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
reader = new StreamReader(response2.GetResponseStream(),System.Text.Encoding.UTF8);
string json = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
我为StreamReader尝试了不同的编码,UTF8,UTF7,Unicode,......都没有用.
非常感谢!
感谢LB纠正我.问题不在StreamReader中.
Guf*_*ffa 10
是的,有一些内置的方法,但这将涉及使用编译器将字符串解析为代码...
使用简单的替换:
s = s.Replace(@"\u0040", "@");
Run Code Online (Sandbox Code Playgroud)
要获得更灵活的解决方案,您可以使用可以处理任何unicode字符的正则表达式:
s = Regex.Replace(s, @"\\u([\dA-Fa-f]{4})", v => ((char)Convert.ToInt32(v.Groups[1].Value, 16)).ToString());
Run Code Online (Sandbox Code Playgroud)
Json 响应不是使用某些编码转换为字符串的二进制数据。相反,它们是由您的浏览器或HttpWebResponse您的示例中正确解码的字符串。您需要对其进行第二次处理(正则表达式、反序列化器等)才能获取最终数据。
webClient.DownloadString("https://graph.facebook.com/HavelVaclav?access_token=????")看看你在没有任何编码的情况下得到了什么
{"id":"100000042150992",
"name":"Havel V\u00e1clav",
"first_name":"Havel",
"last_name":"V\u00e1clav",
"link":"http:\/\/www.facebook.com\/havel.vaclav",
"username":"havel.vaclav",
"gender":"male",
"locale":"cs_CZ"
}
Run Code Online (Sandbox Code Playgroud)
您的编码会更改\/为吗/?
所以,问题不在你的StreamReader。
| 归档时间: |
|
| 查看次数: |
6527 次 |
| 最近记录: |