現在、SQL Server テーブルをスキャンし、テキストを含む列を読み取っている powershell プロセスがあります。現在、拡張 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 で拡張されているため、結果がブラウザからのコピーと同じになるかどうかはわかりません。
パワーシェルで
[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; したがって、私の質問は、ほとんどの値で機能しますが、ASCII 値 150 では機能しないため、powershell で ASCII 値を検索する上記の正しい方法です (これは単語からの長いダッシュです)。