AdaptiveCard Bot Framework V4中的日语字符

时间:2019-05-27 06:28:13

标签: c# botframework cjk

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

这是我创建自适应卡的方法,然后将参数和数据存储在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),
        };

打印输出的图片: enter image description here

您可以看到返回的JSON数据也是错误的。因此,这将其固定在Bot的主要来源上。我尝试对包含日语字符的Json文件进行更改,也更改了web.config处的编码,但并没有解决我的问题。回到Bot Framework v3,打印/显示日语字符没有问题。但是当我尝试v4时,日语字符就会变成这样。

任何修复,解决方案,解决方法将不胜感激。谢谢

编辑: 使用ReadAllText中的编码参数(Encoding.UTF8,Encoding.UTF32,Encoding.Unicode)进行了尝试。在UTF8中,其他日语字符可以打印但破坏了无法解析的Json格式,它也发生在utf32和unicode中。默认情况下,字符是相同的。

编辑: 因此,在进行了不懈的研究之后,我发现JSON仅将数据编码为标准UTF-8以使其更轻便,并尝试使用将字符转换为UTF-16并成功打印,但这对我来说似乎是错误的。还有其他方法可以正确打印日语字符吗?

1 个答案:

答案 0 :(得分:1)

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

enter image description here

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

enter image description here

如果选择带有或不带签名的Unicode(UTF-8)的代码页65001,则日语字符应正确显示:

enter image description here