2010-09-06 3 views
-1

Je fais unSystem.Text.Encoding.UTF8.GetBytes (s) de valeurs différentes pour une chaîne sur le même ordinateur, des programmes différents

System.Text.Encoding.UTF8.GetBytes(s) 

sur une chaîne dans deux programmes différents (une console, un web) utilisant .NET 2.0 framework et l'encodage revient différemment des deux. Pour la chaîne "tout" je reçois le même résultat, mais pour la chaîne "OnI3UwUc" j'obtiens deux résultats différents.

Pour "OnI3UwUc", 6f6e693375777563 Pour "OnI3UwUc" dans un autre programme, j'obtiens 4f63493355775563.

Dans le

J'ai essayé d'écrire ce faire fonctionner le même que celui du code ASP classique que j'ai:

Dim crypt : Set crypt = CreateObject("Chilkat.Crypt2")  
crypt.UnlockComponent("TXTECHCrypt_6X6EnMdFNRCe") 
crypt.HashAlgorithm = "sha1" 
crypt.CryptAlgorithm = "aes" 
crypt.CipherMode = "ecb" 
crypt.EncodingMode = "hex" 
crypt.SetEncodedKey "100202330405560608790A8B0C9D0EAF","hex" 
+2

Serait-ce trop demander pour vous d'afficher les deux résultats différents que vous obtenez? – Timwi

+1

J'ai du mal à le croire. Comment vérifiez-vous les résultats de l'appel? –

+0

Imprime les résultats. Si vous utilisez un débogueur pour regarder les résultats de l'appel, ne le faites pas. Ça va vous tromper. –

Répondre

6

Vous avez mentionné que l'UTF-8 que vous obtenez d'un des programmes est 6f6e693375777563. Cela décode à "oni3uwuc". En d'autres termes, votre autre programme déprécie toutes les lettres avant le codage UTF-8.

0

C'est très peu probable. Utilisez File.WriteAllText("C:/file1.txt", s) pour les deux chaînes et comparez-les avec soin. Ils sera différent de.

Dans le cas très improbable qu'ils sont effectivement égaux, s'il vous plaît essayez de supprimer tout de ces deux programmes qui ne touchent pas ce résultat, et puis après sur connect.microsoft.com et lien ici. Notez cependant que les programmes de plus de 100 lignes sont presque certainement réductibles davantage.

Questions connexes