如何使用 unicode 字符串正确解码 JSON 数据
How to correctly decode JSON data with unicode strings on it
我正在阅读一个 json 文件,其中某些字段具有如下字符串:
"Eduardo Fonseca Bola\u00c3\u00b1os comparti\u00c3\u00b3 una publicaci\u00c3\u00b3n."
最后的结局应该是这样的
"Eduardo Fonseca Bolaños compartió una publicación."
- 是否有任何开箱即用的转换为使用 C# 执行此操作?
- 转换这些 json 数据的正确方法是什么?
您可以使用 Json.NET 库来解码字符串。解串器自动解码字符串。
public class Example
{
public String Name { get; set; }
}
//
var i = @"{ ""Name"" : ""Eduardo Fonseca Bola\u00c3\u00b1os comparti\u00c3\u00b3 una publicaci\u00c3\u00b3n."" }";
var jsonConverter = Newtonsoft.Json.JsonConvert.DeserializeObject(i);
// Encode the string to UTF8
byte[] bytes = Encoding.Default.GetBytes(jsonConverter.ToString());
var myString = Encoding.UTF8.GetString(bytes);
Console.WriteLine(myString);
// Deserialize using class
var sample = Newtonsoft.Json.JsonConvert.DeserializeObject<Example>(i);
byte[] bytes = Encoding.Default.GetBytes(sample.Name);
var myString = Encoding.UTF8.GetString(bytes);
Console.WriteLine(myString);
输出为:
{
"Name": "Eduardo Fonseca Bolaños compartió una publicación."
}
选项 2
您可以使用System.Web.Helpers.Json.Decode方法。您不需要使用任何外部库。
这是针对这种特定情况的解决方法
private static Regex _regex =
new Regex(@"(\u(?<Value>[a-zA-Z0-9]{4}))+", RegexOptions.Compiled);
private static string ConvertUnicodeEscapeSequencetoUTF8Characters(string sourceContent)
{
//Check
return _regex.Replace(
sourceContent, m =>
{
var urlEncoded = m.Groups[0].Value.Replace(@"\u00", "%");
var urlDecoded = System.Web.HttpUtility.UrlDecode(urlEncoded);
return urlDecoded;
}
);
}
基于Replace unicode escape sequences in a string
我正在阅读一个 json 文件,其中某些字段具有如下字符串: "Eduardo Fonseca Bola\u00c3\u00b1os comparti\u00c3\u00b3 una publicaci\u00c3\u00b3n."
最后的结局应该是这样的 "Eduardo Fonseca Bolaños compartió una publicación."
- 是否有任何开箱即用的转换为使用 C# 执行此操作?
- 转换这些 json 数据的正确方法是什么?
您可以使用 Json.NET 库来解码字符串。解串器自动解码字符串。
public class Example
{
public String Name { get; set; }
}
//
var i = @"{ ""Name"" : ""Eduardo Fonseca Bola\u00c3\u00b1os comparti\u00c3\u00b3 una publicaci\u00c3\u00b3n."" }";
var jsonConverter = Newtonsoft.Json.JsonConvert.DeserializeObject(i);
// Encode the string to UTF8
byte[] bytes = Encoding.Default.GetBytes(jsonConverter.ToString());
var myString = Encoding.UTF8.GetString(bytes);
Console.WriteLine(myString);
// Deserialize using class
var sample = Newtonsoft.Json.JsonConvert.DeserializeObject<Example>(i);
byte[] bytes = Encoding.Default.GetBytes(sample.Name);
var myString = Encoding.UTF8.GetString(bytes);
Console.WriteLine(myString);
输出为:
{
"Name": "Eduardo Fonseca Bolaños compartió una publicación."
}
选项 2
您可以使用System.Web.Helpers.Json.Decode方法。您不需要使用任何外部库。
这是针对这种特定情况的解决方法
private static Regex _regex =
new Regex(@"(\u(?<Value>[a-zA-Z0-9]{4}))+", RegexOptions.Compiled);
private static string ConvertUnicodeEscapeSequencetoUTF8Characters(string sourceContent)
{
//Check
return _regex.Replace(
sourceContent, m =>
{
var urlEncoded = m.Groups[0].Value.Replace(@"\u00", "%");
var urlDecoded = System.Web.HttpUtility.UrlDecode(urlEncoded);
return urlDecoded;
}
);
}
基于Replace unicode escape sequences in a string