Я только что решил эту ошибку, перезапустив мой Eclipse и запустив applcation. Причина моего случая может быть связана с тем, что я заменяю исходные файлы без закрытия моего проекта или Eclipse. Это вызвало разную версию классов, которые я использовал.
Вы можете использовать библиотеку 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."
}
Вы можете использовать метод 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 https://stackoverflow.com/questions/9738282/replace-unicode-escape-sequences-in-a-string
return _regex.Replace(
sourceContent, m =>
{
var urlEncoded = m.Groups[0].Value.Replace(@"\u00", "%");
var urlDecoded = System.Web.HttpUtility.UrlDecode(urlEncoded);
return urlDecoded;
}
);
}
На основе Заменить escape-последовательности Юникода в строке