Powershell将字符转换为ASCII

时间:2012-06-19 22:41:27

标签: sql-server-2008 powershell extended-ascii

目前我有一个PowerShell进程正在扫描SQL Server表并正在读取包含文本的列。目前,我们在扩展的ASCII域中具有导致我们的下游进程中断的字符。我在SQL Server中识别这些差异,但在文本解析方面很糟糕所以我决定编写一个PowerShell脚本来组合正则表达式。我将发布代码,以帮助其他失去灵魂寻找这样的正则表达式。

$x = [regex]::Escape("\``~!@#$%^&*()_|{}=+:;`"'<,>.?/-")
$y = "([^A-z0-9 \0x005D\0x005B\t\n"+$x+"])"
$a =  [regex]::match( $($Row[1]), $y)

问题来自于我想在电子邮件中显示一些ascii值,表示我正在清理数据。这些数字与SQL Server不同。注意我不确定您的结果是否与浏览器的复制相同,因为它们是扩展为ascii。

在powershell中

[int]"–"[-0]; #result 8211 that appears to be wrong
[int]" "[-0]; #result 160 this appears to be right

在SQL Server中

select ASCII('–') --result 150
select ASCII(' ') --result 160

如果有的话,powershell中的内容将帮助您在ASCII查找中获得与SQL Server相同的结果。

TLDR;所以我的问题是,上面是在powershell中查找ASCII值的正确方法,因为它适用于大多数值,但不适用于ASCII值150(这是来自单词的长划线)。

1 个答案:

答案 0 :(得分:1)

在SQL Server中,

select UNICODE('–')

将返回8211。

我不认为PowerShell支持ANSI,I / O除外;它在内部使用Unicode。