[英]JsonNode.Parse: error parsing text with accents
我正在嘗試使用 System.Text.Json 類中的 JsonNode 的 Parse 方法解析拉丁文本。
但是當文本包含重音符號時,該方法返回轉義字符。
var jsonString = File.ReadAllText(path, Encoding.GetEncoding(1252));
var jTemplate = JsonNode.Parse(jsonString);
對象“ jsonString ”包含正確的文本(帶重音)但是當我調用 JsonNode.Parse 對象“jTemplate”包含錯誤的文本
jsonString 中的“Ciberseguridad en la Organización”
jTemplate 中的“Ciberseguridad en la Organizaci\ón ”
我也嘗試過其他編碼和代碼頁,例如UTF8具有相同的結果......
¿知道如何解析帶重音的文本嗎?
提前致謝。
目前JsonNode.Parse()
沒有提供類似於 JsonSerializer 的設置Encoder
的方法。
您有兩個選擇:
改用JsonSerializer
並按照上面鏈接中的提示進行操作。
使用JsonNode
解析后JsonNode
轉義字符串值:
var expectedValue = Regex.Unescape(jTemplate["key"].ToString());
我可以為您提供使用 JsonSerializer.Deserialize 方法,該方法接受 JsonSerializerOptions 對象,您可以在其中設置編碼器。
我的代碼示例的輸出是:
Ciberseguridad en la Organización
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
string jsonString = "{\"data\": \"Ciberseguridad en la organización\"}";
JsonSerializerOptions options = new JsonSerializerOptions()
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
DataDto? jTemplate = JsonSerializer.Deserialize<DataDto>(jsonString, options);
Console.WriteLine(jTemplate.data);
class DataDto
{
public string data { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.