2013-03-22 1 views
5

Attualmente sto producendo un file JSON da uno script PowerShell ma sta emettendo Unicode invece di caratteri speciali come '<' Ho bisogno di HTML nel LinkText ma non sono sicuro di come cambiare la codifica.Json Codifica stringa HTML

Questa è l'uscita sto ottenendo:

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

Questo è il codice che sto usando:

$(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? –

risposta

2

Non vedo un parametro predefinito per impedire che quella conversione avvenga. Ecco una soluzione che converte di nuovo i caratteri Unicode:

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

Grazie per questo Shay – steven

+0

Puoi anche usare [regex] :: Unescape() come spiegato qui: http://stackoverflow.com/questions/29306439/powershell-convertto-json-problen-contain-special-characters. – Cary

0

Out-File non è un colpevole qui, è esattamente ciò che scrive Converti-Json produce. Tuttavia, se si canalizza l'output in ConvertFrom-Json, funziona perfettamente. Sei sicuro che sia un problema?