使用双引号时,url解码器背后的逻辑是什么?

时间:2016-03-21 23:06:51

标签: c# asp.net .net

为什么url解码在解码%22时没有出错。这是双引号。当程序员在字符串中输入双引号时,它们必须使用两个双引号“”来表示双引号。

例如

string myString = "It\"s nice to meet you";
console.write(myString);

输出

很高兴见到你

但是当url解码双引号时为什么它不会破坏。字符串通过url解码器后,只有一个引号“。为什么这不会破坏代码?

例如

 string myString = "It%22s nice to meet you";
 myString = HttpUtility.UrlDecode(myString);
 console.Write(myString);

输出

很高兴见到你

2 个答案:

答案 0 :(得分:4)

转义双引号的需要只是C#中文字字符串的一个问题。语言是这样定义的。非文字不受影响:((char)35).ToString() == "\""为真。

这对实际运行时值没有影响。 "\"".Length是1. CLR不知道转义。

CLR能够托管许多编程语言。它并不关心单一语言的逃避规则。

库函数甚至不能告诉你如何编写或计算字符串。即使他们想要。

答案 1 :(得分:1)

结果是一样的。它们只是双引号的不同表示 - 取决于你如何解码它。

// All the same:
string myString1 = @"It""s nice to meet you"; // string simplification
string myString2 = "It\"s nice to meet you"; // escaping a double quote
string myString3 = HttpUtility.UrlDecode("It%22s nice to meet you");