在解析某些网页的HTML(最值得注意的是,任何Windows实时页面)时,我会遇到以下格式的大量网址.
HTTP\X3A\X2F\x2fjs.wlxrs.com\x2fjt6xQREgnzkhGufPqwcJjg\x2fempty.htm
这些似乎是部分UTF8转义字符串(\ x2f = /,\ x3a =:等等...).是否有.Net API可用于将这些字符串转换为System.Uri?似乎很容易解析,但我试图避免今天建立一个新的车轮.
您发布的内容不是有效的 HTTP。这样的话,当然HttpUtility.UrlDecode()
行不通。但无论如何,您都可以将其转回正常文本,如下所示:
string input = @"http\x3a\x2f\x2fjs.wlxrs.com\x2fjt6xQREgnzkhGufPqwcJjg\x2fempty.htm";
string output = Regex.Replace(input, @"\\x([0-9a-f][0-9a-f])",
m => ((char) int.Parse(m.Groups[1].Value, NumberStyles.HexNumber)).ToString());
Run Code Online (Sandbox Code Playgroud)
但请注意,这假设编码是 Latin-1 而不是 UTF-8。您提供的意见在这方面尚无定论。如果需要UTF-8才能工作,则需要稍长的路线;您必须将字符串转换为字节,并用过程中的相关字节替换转义序列(可能需要 while 循环),然后使用Encoding.UTF8.GetString()
生成的字节数组。
归档时间: |
|
查看次数: |
1248 次 |
最近记录: |