2017-06-02 62 views
1

我有一個運行SQL查詢的Powershell腳本,使用ConvertTo-JSON將其轉換爲JSON並將其寫入文件。然後,我使用Posh-SSH powershell模塊將此文件SFTP到Linux服務器。從Python Powershell輸出生成的Python轉義JSON文件

Linux服務器然後運行一個python腳本來打開該文件,並將其轉換成JSON:

fname = '/foo/bar/map.json' 
with open(fname, 'r') as f: 
    map = json.loads(f.read()) 

這Python腳本,然後引發錯誤:

No JSON object could be decoded

這是由於Windows/Powershell將怪異的角色投入混合,顯然。我已經使用JSON linters來驗證JSON的完整性,並且當我在Linux中複製轉儲並將其粘貼到新文件時,它都是hunkydory。

我該如何解決這個問題?我對字符編碼知之甚少,無法分辨出發生了什麼。

+0

請包括一些文件內容(比如說第一對幾行或者幾百個字符,如果行太長)。 – DyZ

回答

2

爲什麼在StackOverflow上編寫問題總是讓我立即解決自己的問題?我的意思是,這需要數小時。


將編碼設置爲UTF8有竅門。

Invoke-SQLCmd -Query "exec foo.dbo.proc" 
    | Select-Object * -ExcludeProperty ItemArray, Table, RowError, RowState, HasErrors 
    | ConvertTo-Json 
    | % { [System.Text.RegularExpressions.Regex]::Unescape($_) } 
    | Out-File "c:\config\map.json" -Encoding UTF8 
+1

這就是所謂的橡皮鴨調試 – Matt

+1

我覺得就像去同事那裏告訴他有關你的錯誤,並用解決方案回到你的辦公桌上,沒有同事知道如何打開電腦......; ) – restless1987

+0

僅供參考,您可以標記自己的答案:) –