PowerShell 技能连载 - HTML 高级编码

.NET 静态方法 HtmlEncode 能够较好地将普通字符进行编码,但是对于许多特殊字符会处理失败。要正确地对所有字符编码,我们编写了一个 ConvertTo-EncodedHtml 函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function ConvertTo-EncodedHTML($HtmlText)
{

$chars = [Web.HttpUtility]::HtmlEncode($HtmlText).ToCharArray()
$txt = New-Object System.Text.StringBuilder
$null = . {
foreach($c in $chars)
{
if ([int]$c -gt 127)
{
$txt.Append("&#" + [int]$c + ";")
}
else
{
$txt.Append($c)
}
}
}
return $txt.ToString()
}

这个函数检查所有 ASCII 代码大于 127 的字符并将这些字符转换为编码后的版本:

1
2
PS> Convert-EncodedHTML -HtmlText "A – s ‘Test’"
A – s ‘Test’

本文国际来源:HTML Encoding Advanced

评论