繁体   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