c#转换字符串编码非Ascii字符

0 c# encode

我有这个需要 unicode 值来显示上标字符的 UI。传入的数据有 html 代码。我能看到的唯一问题是它需要一个额外的反斜杠。我将一串“®”传递给 EncodeNonAsciiCharacters。

有什么办法可以返回\u00AE而不是\\u00AE

static string EncodeNonAsciiCharacters(string value)
{
    StringBuilder sb = new StringBuilder();
    foreach (char c in value)
    {
        if (c > 127)
        {
            string encodedtext = ((int)c).ToString("x4");
            //string encodedValue = "\\u" + encodedtext.ToUpper();
            string encodedValue = @"\u" + encodedtext.ToUpper();
                sb.Append(encodedValue);
        }
        else
        {
            sb.Append(c);
        }
    }
    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我已经编写了一个程序来证明您的要求。如果在字符串之前使用 @ ,则不需要转义字符串文字。这意味着按字面解释字符串(即,如果使用 @ 前缀,则不能对字符串中的任何字符进行转义)。在可以使用的情况下,它增强了可读性。

using System;
using System.Text;

public class Program
{
    public static void Main()
    {
            string value="? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ®";
            StringBuilder sb = new StringBuilder();
            foreach (char c in value)
            {
                if (c > 127)
                {
                    string encodedtext = ((int)c).ToString("x4");
                    string encodedValue = @"\u" + encodedtext.ToUpper();
                    sb.Append(encodedValue);
                    //Console.WriteLine(encodedValue);
                }
                else
                {
                    sb.Append(c);
                }
            }
            Console.WriteLine(sb.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

\u2078 
\u2079 
\u207A 
\u207B 
\u207C 
\u207D 
\u207E 
\u2080 
\u2081 
\u2082 
\u2083 
\u2084 
\u2085 
\u2086 
\u2087 
\u2088 
\u2089 
\u208A 
\u208B 
\u208C 
\u208D 
\u208E 
\u00AE
Run Code Online (Sandbox Code Playgroud)