目前我有一個正在掃描SQL Server表並正在讀取包含文本的列的PowerShell程序。目前,我們有擴展的ASCII域中的字符會導致我們的下游進程中斷。我原先在SQL Server中識別這些差異,但在解析文本時很糟糕,所以我決定編寫一個powershell腳本來完成組合正則表達式的操作。我會發布代碼,以幫助其他失去的靈魂尋找這樣的正則表達式。將字符轉換爲ASCII的Powershell
$x = [regex]::Escape("\``[email protected]#$%^&*()_|{}=+:;`"'<,>.?/-")
$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(這是來自單詞的長破折號)。
啊,這是一個恥辱,它的工作原理是這樣的,但現在一切都在SQL Server和Powershell之間進行匹配。 – JStead