AdaptiveCard Bot Framework V4 中的日语字符

Japanese character in AdaptiveCard Bot Framework V4

我一直在尝试打印一张带有日语字符的简单卡片,但它一直显示方框和未知字符。

这就是我创建自适应卡的方式,然后我在 json 中获取参数和数据,只是为了使其整洁。

        string[] paths = { ".", "Cards", "pickLanguageCard.json" };
        string fullPath = Path.Combine(paths);
        var adaptiveCard = File.ReadAllText(fullPath);
        return new Attachment()
        {
            ContentType = "application/vnd.microsoft.card.adaptive",
            Content = JsonConvert.DeserializeObject(adaptiveCard),
        };

打印输出图片:

如您所见,返回的 JSON 数据也是错误的。所以这将它固定到 Bot 的主要来源。我尝试将包含日语字符的 Json 文件也更改为 web.config 处的编码,但它并没有解决我的问题。回到 Bot Framework v3,printing/displaying 日文字符没有问题。但是当我尝试 v4 时,日语字符会变成那样。

任何修复、解决方案、变通方法都将不胜感激。谢谢

编辑: 尝试使用 ReadAllText 中的编码参数(Encoding.UTF8、Encoding.UTF32、Encoding.Unicode)。在UTF8中,其他日文字符得到打印但破坏格式Json无法解析,在utf32和unicode中也出现。默认情况下字符相同。

编辑: 所以在不懈地研究之后,我发现 JSON 只将数据编码为标准的 UTF-8 以使其更轻,并尝试使用将字符转换为 UTF-16 并成功打印,但这对我来说似乎是错误的.有没有其他方法可以正确打印日文字符?

当您在 Visual Studio 2019 年编辑 JSON 并尝试使用日文字符保存文件时,Visual Studio 会自动为您修复格式:

如果您想使用特定编码手动保存文件,而不是依赖自动对话框,您可以使用“文件”>“另存为...”对话框中的“使用编码保存...”选项:

如果您 select 代码页 65001,即带或不带签名的 Unicode (UTF-8),您的日文字符应该可以正确显示: