Invoke-Sqlcmd:“¦”附近的语法不正确。编码问题
Invoke-Sqlcmd : Incorrect syntax near '¦'. Encoding issue
在 PowerShell 脚本中,我读取了一个配置文件和 运行 一些 SQL 查询。如果我复制代码并将其粘贴到 PowerShell ISE 中,效果很好。
但是如果我 运行 使用 Powershell 右键单击文件 > 运行 脚本,我会得到一个错误
Invoke-Sqlcmd : Incorrect syntax near '¦'
如果查询包含斯堪的纳维亚字符“æøå”,我只会收到此错误。
$config = Get-Content -Path <path to file>\config.json | ConvertFrom-Json
$server = $config.server
$database = $config.database
Invoke-Sqlcmd -ServerInstance $server -Database $database -QueryTimeout 0 -Query "select Næringskode from Virksomhet"
config.json
{
"server": "localhost",
"database": "MyDatabase"
}
确保脚本保存在 powershell 5.1 可以识别的编码中(我正在查看 Win10 20h2 中的记事本)(ansi 可能是最糟糕的选择):
ansi
utf-16 le
utf-16 be
utf-8 with bom
不会(除非您使用的是 powershell 7)。
utf-8
记事本可以识别utf-8
测试。ps1:
'æøå'
在 PowerShell 脚本中,我读取了一个配置文件和 运行 一些 SQL 查询。如果我复制代码并将其粘贴到 PowerShell ISE 中,效果很好。
但是如果我 运行 使用 Powershell 右键单击文件 > 运行 脚本,我会得到一个错误
Invoke-Sqlcmd : Incorrect syntax near '¦'
如果查询包含斯堪的纳维亚字符“æøå”,我只会收到此错误。
$config = Get-Content -Path <path to file>\config.json | ConvertFrom-Json
$server = $config.server
$database = $config.database
Invoke-Sqlcmd -ServerInstance $server -Database $database -QueryTimeout 0 -Query "select Næringskode from Virksomhet"
config.json
{
"server": "localhost",
"database": "MyDatabase"
}
确保脚本保存在 powershell 5.1 可以识别的编码中(我正在查看 Win10 20h2 中的记事本)(ansi 可能是最糟糕的选择):
ansi
utf-16 le
utf-16 be
utf-8 with bom
不会(除非您使用的是 powershell 7)。
utf-8
记事本可以识别utf-8
测试。ps1:
'æøå'