2013-03-22 50 views
5

Tôi hiện đang tạo tệp JSON từ tập lệnh PowerShell nhưng xuất ra Unicode thay vì các ký tự đặc biệt như '<' Tôi cần HTML trong LinkText nhưng không chắc chắn cách thay đổi mã hóa.Chuỗi mã hóa Json HTML

Đây là sản phẩm tôi nhận được:

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

Đây là mã mà tôi đang sử dụng:

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

Trả lời

2

Tôi không thấy thông số được cài sẵn để ngăn chuyển đổi đó xảy ra. Đây là giải pháp thay đổi các ký tự unicode sau:

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

Cảm ơn Shay – steven

+0

Bạn cũng có thể sử dụng [regex] :: Unescape() như được giải thích tại đây: http://stackoverflow.com/questions/29306439/powershell-convertto-json-problen-containing-special-characters. – Cary

0

Out-File được không phải là một thủ phạm ở đây, nó viết chính xác những gì ConverTo-Json sản xuất. Tuy nhiên, nếu bạn đầu ra đường ống của bạn vào ConvertFrom-Json, nó hoạt động tốt. Bạn có chắc đó là một vấn đề?