【问题标题】:Invoke-WebRequest : 'utf-8lias' is not a supported encoding nameInvoke-WebRequest:'utf-8lias' 不是受支持的编码名称
【发布时间】:2014-08-07 08:08:30
【问题描述】:

我正在尝试获取 Dilbert 网站的 HTML 内容。 我正在使用以下命令:

Invoke-WebRequest "http://dilbert.com/" -Method Get

但这样做会收到以下错误消息:

“Invoke-WebRequest : 'utf-8lias' 不是受支持的编码名称。”

我尝试在末尾添加 '-ContentType "text/html; charset=utf-8"' 但给出了同样的错误。

如何将发送的“utf-8lias”标头编码覆盖为“utf-8”?

谢谢

【问题讨论】:

  • 你的目标到底是什么?我现在还不知道答案(如何强制编码类型),但是我已经设法使用不同的方法从该站点解析原始 html。有兴趣的话告诉我
  • 发送无效字符集的不是您,而是dilbert.com/rss 发送Content-Type: text/html; charset=utf-8lias。要使其工作,您需要找到一种在处理之前修改响应标头的方法:如果不直接使用HttpWebRequest,这是不可能的。顺便说一句,不仅仅是你:例如bugzilla.mozilla.org/show_bug.cgi?id=737966
  • @Koliat 我的最终目标是尝试通过解析 html 找到 dilbert strip 图像的路径,然后将其发送到我的 littleprinter.com 上打印出来让我先试试 Raf 下面建议的看看这是否让我更进一步。谢谢
  • 实际上 Raf 发布的是我设法解析原始 html 并因此跳过 ContentType 的方式 :-) 我只是不确定这是否符合您的需求,我不喜欢在我提供答案时'不确定它们是否符合需要 :-)

标签: powershell encoding powershell-4.0


【解决方案1】:

使用System.Net.WebClient 的解决方法,您的 html 将存储在 var $p 中,这将在结尾处回显:

$webclient = new-object System.Net.WebClient
$p = $webclient.DownloadString("http://dilbert.com")
$p

【讨论】:

  • 感谢@Raf,因为 Koliat 提到它现在是一个原始的 html 字符串。有什么方法可以将其转换为 Invoke-WebRequest 之类的对象会返回,这样我也可以通过 $p.Images 之类的方式访问所有图像?似乎没有像 'ConvertFrom-HTML' 之类的 cmdlet,所以我也不能尝试类似于 stackoverflow.com/questions/9053573/… 的东西。如果它不存在,我是否必须尝试构建一个正则表达式才能找到它?
  • 不幸的是,使用此解决方法您只能得到一个字符串。正则表达式是提取图片网址的方法,但您应该将其作为单独的问题发布。
猜你喜欢
  • 2016-12-28
  • 2012-11-13
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 2015-12-04
  • 2020-06-13
  • 2011-10-08
  • 1970-01-01
相关资源
最近更新 更多