簡體   English   中英

System.Text.json JsonSerializer unicode 從 json 文件讀取時出現問題

[英]System.Text.json JsonSerializer unicode issue on read from json file

在 C# .net 核心環境中,使用 System.Text.Json Z8AB3B19E134F501FBAF94B8E 字符替換DF501FBAF94B8E1。 例如,在將 json 文件讀入 object 的列表到另一個符號中后顯示“ü”

Passwort zurücksetzen

變成

Passwort zur�cksetzen

我嘗試設置 json 選項:

JsonSerializerOptions jso = new JsonSerializerOptions();
            jso.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
            this.messageTemplates = JsonSerializer.Deserialize<List<MessageTemplate>>(messageTemplateJsonData, jso);

這並沒有改變行為。

任何想法?

這似乎是在這種情況下發生的問題。 也許您正在不具有相同默認編碼的組件之間傳輸此字符串,或者正在讀取具有與 CLR 的默認編碼不同的編碼的文件。

在對您的問題發表評論時,您說“我將數據打印到控制台”。 你能打印原始字符串嗎(在反序列化之前,這個 messageTemplateJsonData 對象)? 他的角色顯示正確嗎?

或者,您可以在內部使用此字符創建一個字符串(不是從外部讀取,而是在您的代碼中創建一個文字)並查看是否發生錯誤。

我試圖在 Csharp 筆記本(在 vscode 中)上重現這個問題,並得到了正確的結果,但這是.Net 6,所以它可能是版本問題。

試圖重現錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM