观察以下内容:
WebUtility.HtmlDecode("\u003d")
输出“ =”
WebUtility.HtmlEncode("=")
输出“ =”
我想对包含等号的字符串进行编码,但是未对符号进行编码。我不想自己编写此功能,因为我还不知道要编写的所有字符大小写。
有人能回答为什么HtmlEncode和Decode函数在这种情况下似乎不是双向的吗?如果有一个函数,我应该使用它来编码= / u003d
答案 0 :(得分:1)
"\u003d"
与"="
相同(尝试"\u003d" == "="
)。您的问题与HTML编码/解码无关。 \u003d
是一个Unicode字符-这是您应搜索的编码/解码。
我发现了以下问题,这些问题为您所寻找的编码和解码提供了代码示例。
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();
} );
}