Dot Net Web Utility HTML编码和解码等号

时间:2018-10-24 13:31:23

标签: c# .net

观察以下内容:

WebUtility.HtmlDecode("\u003d")

输出“ =”

WebUtility.HtmlEncode("=")

输出“ =”

我想对包含等号的字符串进行编码,但是未对符号进行编码。我不想自己编写此功能,因为我还不知道要编写的所有字符大小写。

有人能回答为什么HtmlEncode和Decode函数在这种情况下似乎不是双向的吗?如果有一个函数,我应该使用它来编码= / u003d

1 个答案:

答案 0 :(得分:1)

C#中的

"\u003d""="相同(尝试"\u003d" == "=")。您的问题与HTML编码/解码无关。 \u003d是一个Unicode字符-这是您应搜索的编码/解码。

我发现了以下问题,这些问题为您所寻找的编码和解码提供了代码示例。

From this answer:

static string EncodeNonAsciiCharacters( string value ) {
    StringBuilder sb = new StringBuilder();
    foreach( char c in value ) {
        if( c > 127 ) {
            // This character is too big for ASCII
            string encodedValue = "\\u" + ((int) c).ToString( "x4" );
            sb.Append( encodedValue );
        }
        else {
            sb.Append( c );
        }
    }
    return sb.ToString();
}

static string DecodeEncodedNonAsciiCharacters( string value ) {
    return Regex.Replace(
        value,
        @"\\u(?<Value>[a-zA-Z0-9]{4})",
        m => {
            return ((char) int.Parse( m.Groups["Value"].Value, NumberStyles.HexNumber )).ToString();
        } );
}