2010-12-03 3 views
0

私は、最近インポートされたSQL Server 2008データベースを、アプリケーション用に多くの無効なcharcterを持つものから削除しようとしています。同じASCIIコードの異なる文字が見つかりました。同じASCIIコードの2文字ですか?

私はこのクエリを実行する場合:

select ASCII('║'), ASCII('¦') 

私が取得:

166 166 

私は同様の作業を行う必要がありますが、.NETコードを持ちます。私は.NETでこれらの文字を頼む場合

? ((int)'║').ToString() + ", " + ((int)'¦').ToString() 
I get: 
"9553, 166" 

誰もが

+1

これらの文字のどちらもASCIIです - ASCIIだけで(それが7ビットのコードです)127まで行きます。 –

答えて

4

代わりのASCII何が起こるかを説明することができ、UNICODE関数を使用します。

|の両方がASCII文字ではありませんので、彼らとASCIIを呼び出すと、誤って変換し、間違っ値になります。

また、あなたがN接頭辞を使用して、UNICODE関数を呼び出すときに、Unicode文字列を使用する必要があります。

SELECT UNICODE(N'║'), UNICODE(N'|') 
-- Results in: 9553, 166 
+0

でも、with SQLを使って(int) 'と似た結果を得ることはできますか? –

+0

@Ariel Larraburu 'select UNICODE( '║')、UNICODE( '|')'は正しい値を返します。 – Oded

+0

いいえ、166、166を返します。試してみてください。 –

関連する問題