我在尝试使用 Powershell 4.0 从 SQL Server 表中导出 xml 数据时遇到了字符转换问题。我正在使用 invoke-sqlcmd 运行我的 sql server 查询,发现许多字符没有被正确解释。例如,一个>
字符被接收为>
,一个<
字符被接收为<
。分数、度数符号、格式化引号等都在做同样的事情。我在下面写了几个 $string.replace 命令,这似乎解决了大约 80% 的问题,但是当我抽查结果时,我不断发现转换不正确的新字符。
这是我的 SQL 查询和替换语句的示例:
$sql = [my sql select statement]
$result=Invoke-sqlcmd -Server $server -MaxCharLength 9000000 -Database $db -Username [myusername] -Password [mypassword] -Query $sql
$string=$result[0] | out-string
$string=$string.replace('<', '<')
$string=$string.replace('>', '>')
$string=$string.replace('&quot;', '"')
$string=$string.replace('amp;', '')
$string=$string.replace('“', '“')
$string=$string.replace('â€', '”')
$string=$string.replace('’', "’")
$string=$string.replace('–', "–")
$string=$string.replace('& ', "& ")
$string=$string.replace('½', "½")
$string=$string.replace('¼', "¼")
$string=$string.replace('�', "-")
所以,我有两个想法,感谢您的任何反馈:
1)当我发现问题时,我可以继续导出数据、抽查并编写新的替换语句(如上)。这似乎很耗时且容易出错。如果我走这条路,我希望不要重新发明轮子。有没有人找到或创建了一个我可以开始使用的常见误解字符列表?
2) 另一种选择是尝试使用我的 invoke-sqlcmd 命令找到字符转换问题的根源,这样我就不必在字符串中进行所有替换。我对此进行了相当多的研究,但没有发现任何可以正常工作的东西。有人对我可以在我的 invoke-sqlcmd 命令中更改哪些内容以正确编码数据有任何想法吗?
我非常感谢可以提供的任何帮助。
谢谢!克里斯