Invoke-WebRequest编码

时间:2016-03-15 07:55:40

标签: powershell web encoding

执行时:

$html = iwr "http://localhost/..."

我把塞尔维亚人的角色当作垃圾。但是当我执行时:

[Net.HttpWebRequest]$WebRequest =[Net.WebRequest]::Create("http://localhost/...")
[Net.HttpWebResponse]$WebResponse = $WebRequest.GetResponse()
$Reader = New-Object IO.StreamReader($WebResponse.GetResponseStream())
$Response = $Reader.ReadToEnd()

我通常会看到塞尔维亚人的角色。如何使用Invoke-WebRequest获得相同的响应?

更新

Encoding of the response of the Invoke-Webrequest的解决方案并不适合我。问题是这里输出的iwr保存到文件然后加载到变量中。但是,当这样做时,我无法使用ParsedHtml属性,这是我的主要兴趣。

如果我后来做了上面提到的建议:

$ParsedHtml = New-Object -com "HTMLFILE"
$ParsedHtml.IHTMLDocument2_write($content)
$ParsedHtml.Close()

以下不起作用:

$text = $ParsedHtml.body.getElementsByClassName('content')

$ParsedHtml.title确实有效但$ParsedHtml.body -eq $null为真,因此我无法访问元素。当我从iwr.ParsedHtml.body内部访问body元素时,一切正常(除了提到的编码)。

我也尝试过:

$text = [text.encoding]::UTF8.getstring([text.encoding]::default.GetBytes($text))

虽然某些字符现在正常,但其他字符不是。

0 个答案:

没有答案