Json编码HTML字符串

6

我目前正在使用PowerShell脚本生成JSON文件,但输出的是Unicode而不是特殊字符,例如'<'。我需要在LinkText中使用HTML,但不确定如何更改编码。

这是我得到的输出:

[
    {
        "Id":  "187303",
        "LinkText":  "\u003cb style =color:#d11717;\u0027\u003eAnnual General Meeting (MEET)"
    },
    {
        "Id":  "187305",
        "LinkText":  "\u003cb style =color:#d11717;\u0027\u003eAnnual General Meeting (MEET)"
    }
]

这是我正在使用的代码:

$(foreach ($row in $DataSet.Tables[0].Rows){  
    $stockShortName = $row[0].ToString().Trim()
    $id = $row[0].ToString().Trim()
    $linkText = "<b style =color:`#d11717;'>$event_description" 

    (New-Object PSObject |
     Add-Member -PassThru NoteProperty Id $id |
     Add-Member -PassThru NoteProperty LinkText $linkText 
    )
}) | ConvertTo-JSON | Out-File $OutputFile -Encoding "default"
2个回答

4

我没有看到内置参数可防止该转换发生。以下是一个解决办法,用于将Unicode字符转换回原字符:

[regex]::replace($json,'\\u[a-fA-F0-9]{4}',{[char]::ConvertFromUtf32(($args[0].Value -replace '\\u','0x'))})

您还可以使用[regex] :: Unescape()如此处所述:http://stackoverflow.com/questions/29306439/powershell-convertto-json-problen-containing-special-characters。 - Cary

0

Out-File 在这里并不是罪魁祸首,它会精确地写出 ConvertTo-Json 生成的内容。但是,如果你将输出管道传递到 ConvertFrom-Json 中,它就可以正常工作了。你确定这是个问题吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接