使用C#将十进制NCR字符串转换为字节

时间:2019-06-05 01:58:04

标签: c#

我需要允许在我的应用程序的电子邮件主题中发送表情符号。用户可以从网络表单中保存表情符号。在网络表单上复制表情符号并将其粘贴时,浏览器会将表情符号保存为十进制NCR格式。

将表情符号保存为十进制NCR格式后,在主题行中无法正确显示。它只是十进制的NCR字符串。如果我可以将此字符串转换为UTF-8字节表示形式,则可以正常工作。

如何从十进制NCR格式转换为UTF-8字节数组?这是一些我用来测试的代码。我用Unicode Code Converter来获取牛角包表情符号的值。

        [Fact]
        public void ConvertsToUnicode() {
            // arrange
            var decimalNcr = "🥐";
            var bytes      = new byte[] {0xF0, 0x9F, 0xA5, 0x90};
            var emoji      = "?";

            // act
            var emojiTest = Encoding.UTF8.GetString(bytes);
            var encoded   = Encoding.UTF8.GetBytes(emoji);

            // assert
            emojiTest.Should()
                     .Be(emoji);

            encoded.Should()
                   .BeEquivalentTo(bytes);
        }

1 个答案:

答案 0 :(得分:0)

我想你可以使用

WebUtility.HtmlDecode

  

转换一个经过HTML编码的字符串以进行HTTP传输   进入解码后的字符串。

HttpUtility.HtmlDecode

  

转换一个经过HTML编码的字符串以进行HTTP传输   进入解码后的字符串。

示例

 Console.WriteLine(WebUtility.HtmlDecode("🥐"));

Online Demo