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

问题描述 投票:0回答:1

我有这个UI需要unicode值来显示上标字符。数据即将入站有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();
}
c# encode
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.