C#转换字符串编码非ASCII字符

时间:2019-03-18 16:15:51

标签: 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();
}

1 个答案:

答案 0 :(得分:3)

我已经编写了一个程序来演示您的要求。如果在字符串之前使用@,则无需转义字符串文字。这意味着按字面意义解释字符串(也就是说,如果使用@前缀,则不能转义字符串中的任何字符)。在可以使用的情况下,它提高了可读性。

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());
    }
}

输出:

\u2078 
\u2079 
\u207A 
\u207B 
\u207C 
\u207D 
\u207E 
\u2080 
\u2081 
\u2082 
\u2083 
\u2084 
\u2085 
\u2086 
\u2087 
\u2088 
\u2089 
\u208A 
\u208B 
\u208C 
\u208D 
\u208E 
\u00AE