沒有錯誤 - 您正在驗證調試器中的字符串,該字符串會自動轉義字符串 - 例如, "Hello \ Goodbye"
將在調試器中顯示爲"Hello \\ Goodbye"
。
這就是說,調試器的工作不同,這取決於你如何看待一個字符串(也無論是當然的C#/ VB):
- 將鼠標懸停在一個字符串(最常見),你會得到逃脫這是你應該做的實際驗證字符串 - 如果您選擇「文本」 Visualiser的,你會看到轉義版本版本的提示
- 監視窗口/當地人還等逃脫顯示版本
- 。
- 的Html Visualiser的不正是它在錫說:)
更新
好了,我已經走了一點,併發射了VS2010,請創建一個測試項目,按照它通過。
[TestMethod]
public void TestMethod1()
{
string a = @"`1234567890-=[]\ ;',./\[email protected]#$%^&*()_+{}|:""<>?|";
Console.WriteLine("Original:");
Console.WriteLine("{0}", a);
string htmlEncoded = System.Web.HttpUtility.HtmlEncode(a);
Console.WriteLine("Html Encoded:");
Console.WriteLine("{0}", htmlEncoded);
}
(顯然,我最初使用了一個逐字字符串,以避免除了雙引號之外的任何東西都要轉義)。
測試的控制檯輸出爲:
Original:
`1234567890-=[]\ ;',./\[email protected]#$%^&*()_+{}|:"<>?|
Html Encoded:
`1234567890-=[]\ ;',./\[email protected]#$%^&*()_+{}|:"<>?|
同樣,如果你斷點測試的結束和開始與visualisers瞎:
哈弗(a
):
"`1234567890-=[]\\ ;',./\\[email protected]#$%^&*()_+{}|:\"<>?|"
即它是C#在工具提示中轉義並被引號包圍。
懸停(htmlEncoded
):
"`1234567890-=[]\\ ;',./\\[email protected]#$%^&*()_+{}|:"<>?|"
..再次,它的HTML編碼和 C#逃脫引號
文本(htmlEncoded
):
`1234567890-=[]\ ;',./\[email protected]#$%^&*()_+{}|:"<>?|
。沒有C#逃逸
HTML(htmlEncoded
):
`1234567890-=[]\ ;',./\[email protected]#$%^&*()_+{}|:"<>?|
在Times New Roman腳本當然:)
我相信我們會回到原始字符串 - 這也表明您描述的場景不可能是這種情況 - 除非您已經將轉義字符串讀爲「正確」,而實際上它不是。 Html不需要\
被轉義。
你可以發佈代碼示例嗎?看起來雙反斜槓被解釋爲反斜槓的轉義字符。 – Robaticus 2011-01-27 13:33:49
什麼編碼?反斜槓不應該使用HTMLEncoding進行更改,因爲它是有效的HTML字符。請張貼相關的代碼。 – 2011-01-27 13:34:03