2010-12-03 6 views
0

Je suis en train de nettoyer une base de données SQL Server 2008 récemment importée qui contient de nombreux caractères invalides pour mon application. et j'ai trouvé différents caractères avec le même code ASCII, c'est-à-dire posible?Deux caractères avec le même code ASCII?

Si j'exécute cette requête:

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

Je reçois:

166 166 

je dois faire un travail similaire, mais avec le code .net.

Si je demande ces ombles en .net:

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

Tout le monde peut-il expliquer ce qui se passe

+1

Aucun de ces caractères est ASCII - ASCII va seulement jusqu'à 127 (il est un code 7 bits). –

Répondre

4

Au lieu de ASCII, utilisez la fonction UNICODE.

Les deux et | ne sont pas un des caractères ASCII, afin d'appeler ASCII avec eux transformerait de manière incorrecte et entraîner la mauvaise valeur.

De plus, vous devez utiliser des chaînes unicode lorsque vous appelez la fonction UNICODE, en utilisant le préfixe N:

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

OK, mais, comment puis-je obtenir un résultat similaire à sql pour (int) '...? –

+0

@Ariel Larraburu - 'sélectionnez UNICODE ('║'), UNICODE ('|')' retournera les valeurs correctes. – Oded

+0

Non, renvoie 166, 166. Essayez-le. –

Questions connexes