我有一个运行SQL查询的Powershell脚本,使用ConvertTo-JSON
将其转换为JSON并将其写入文件。然后我使用Posh-SSH
powershell模块将此文件SFTP到Linux服务器。
Linux服务器然后运行python脚本来打开文件并将其转换为JSON:
fname = '/foo/bar/map.json'
with open(fname, 'r') as f:
map = json.loads(f.read())
然后,这个Python脚本会抛出错误:
无法解码JSON对象
这是由于Windows / Powershell显然将混乱的角色投入混合体中。我使用JSON linters来验证JSON的完整性,当我复制转储并将其粘贴到Linux中的新文件中时,它都是hunkydory。
我如何解决这个问题?我对字符编码知之甚少,无法判断发生了什么。
答案 0 :(得分: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