簡體   English   中英

解碼多個編碼字符串

[英]Decoding multiple encoded string

如何解碼此結果以得到以下結果?

/browse_ajax?action_continuation=1\u0026amp;continuation=4qmFsgJAEhhVQ2ZXdHFQeUJNR183aTMzT2VlTnNaWncaJEVnWjJhV1JsYjNNZ0FEZ0JZQUZxQUhvQk03Z0JBQSUzRCUzRA%253D%253D

/browse_ajax?action_continuation=1&continuation=4qmFsgJAEhhVQ2ZXdHFQeUJNR183aTMzT2VlTnNaWncaJEVnWjJhV1JsYjNNZ0FEZ0JZQUZxQUhvQk03Z0JBQSUzRCUzRA%253D%253D

我嘗試過這些,也多次使用它們,因為我確實讀過字符串,可能會多次編碼。

System.Text.RegularExpressions.Regex.Unescape(string)
System.Uri.UnescapeDataString(string)
System.Net.WebUtility.UrlDecode(string)

這里哪個是正確的函數,或者我需要以什么順序調用它們以獲得該結果。 隨着字符串的變化,集合中可能還會包含其他特殊字符,因此自行解決此問題的方法有點麻煩。

必須將字符串解碼才能與new System.Net.WebClient().DownloadString(string)

編輯:所以我發現上面的聲明是錯誤的, 我不必使用WebClient.DownloadString(string)對此進行解碼 但是,下載的字符串也遭受類似的編碼。 在下載之前,將WebClient的Encoding屬性設置為UTF8可以完成大部分工作,但是某些字符似乎仍然損壞,例如:雙引號和&保持“ \" \&

我不知道如何將\\ u設為&,因此我可以更改& 至 &。

這些字符串以這種方式進行了兩次(實際上是三次)編碼,這表明該字符串未正確編碼。 如果您擁有編碼這些字符串的代碼,請考慮在那里解決此問題,這是問題的根源。

就是說,這是您需要對其進行解碼的解碼調用。 我不推薦這種解決方案,因為它絕對是一種解決方法。 同樣,有問題的行為在於代碼進行編碼。

string val = "/browse_ajax?action_continuation=1\u0026amp;continuation=4qmFsgJAEhhVQ2ZXdHFQeUJNR183aTMzT2VlTnNaWncaJEVnWjJhV1JsYjNNZ0FEZ0JZQUZxQUhvQk03Z0JBQSUzRCUzRA%253D%253D";
val = System.Uri.UnescapeDataString(val);
val = System.Uri.UnescapeDataString(val);
val = System.Web.HttpUtility.HtmlDecode(val);

這將為您提供:

/browse_ajax?action_continuation=1&continuation=4qmFsgJAEhhVQ2ZXdHFQeUJNR183aTMzT2VlTnNaWncaJEVnWjJhV1JsYjNNZ0FEZ0JZQUZxQUhvQk03Z0JBQSUzRCUzRA==

如果您確實要保留%253D%253D編碼,則只需調用Uri.UnescapeData(string)一次。 這將使等號被編碼,但%3D除外,這是它們的正確編碼值。

看起來像是奧秘解決了我的問題,但是我又偶然發現了它,沒有找到任何內置解決方案,因為如果該字符是html轉義字符的一部分,則這些解碼器似乎無法解碼utf8。

但是,由於這些似乎只使用&號,因此我必須使用Replace(@"\&","&")才能進行HtmlDecode並獲取正確的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM