2013-03-22 4 views
5

Ich produziere derzeit eine JSON-Datei aus einem PowerShell-Skript, aber es gibt Unicode anstelle von Sonderzeichen wie '<' Ich brauche HTML in der LinkText, aber nicht sicher, wie Sie die Codierung ändern.Json Encoding HTML Zeichenfolge

Dies ist die Ausgabe erhalte ich:

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

Dies ist der Code, den ich verwende:

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

Antwort

2

Ich sehe keinen integrierten Parameter, um zu verhindern, dass die Konvertierung stattfindet. Hier ist ein Workaround, der Unicode-Zeichen zurück konvertiert:

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

Danke für diese Shay – steven

+0

Sie können auch [Regex] :: Unescape() wie hier erklärt: http://stackoverflow.com/questions/29306439/powershell-convertto-json-problen-containing-special-characters. – Cary

0

Out-File wird hier nicht ein Täter, schreibt es genau das, was ConverTo-Json produziert. Wenn Sie jedoch Ihre Ausgabe in ConvertFrom-Json pipen, funktioniert es gut. Bist du sicher, dass es ein Problem ist?