2013-03-22 148 views
5

我目前正在从PowerShell脚本生成JSON文件,但它正在输出Unicode而不是特殊字符,如'<'我需要LinkText中的HTML,但不知道如何更改编码。Json编码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" 
+0

-encoding UTF8? – 2013-03-22 19:06:43

回答

2

我没有看到内置参数来防止发生转换。这是一个解决方法,可以将Unicode字符转换回来:

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

谢谢你这个谢伊 – steven 2013-03-25 11:28:21

+0

你也可以使用[regex] :: Unescape()在这里解释:http://stackoverflow.com/questions/29306439/powershell-convertto-json-problen-containing-special-characters。 – Cary 2017-04-19 21:25:54

0

出文件不是这里的罪魁祸首,它写什么ConverTo-Json产生。但是,如果将输出管道传输到ConvertFrom-Json中,则工作得很好。你确定这是一个问题吗?