System.Text.Encoding.UTF8.GetBytes (s) разные значения для строки на одном компьютере, разные программы - PullRequest
0 голосов
/ 07 сентября 2010

Я делаю

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

для строки в двух разных программах (одна консоль, одна веб-версия), использующих среду .NET 2.0, и кодировка возвращается, отличная от двух. Для строки «все» я получаю тот же результат, но для строки «OnI3UwUc» я получаю два разных результата.

Для "OnI3UwUc", 6f6e693375777563 Для "OnI3UwUc" в другой программе я получаю 4f63493355775563.

В

Я пытался написать это, чтобы работать так же, как какой-то классический код ASP у меня есть:

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 ]

6 голосов
/ 07 сентября 2010

Вы упомянули, что UTF-8, который вы получаете от одной из программ, - 6f6e693375777563. Это декодирует обратно к "oni3uwuc". Другими словами, ваша другая программа передает все буквы в нижнем регистре до того, как их кодирует UTF-8.

0 голосов
/ 07 сентября 2010

Это крайне маловероятно.Используйте File.WriteAllText("C:/file1.txt", s) для обеих строк и тщательно сравните их.Они будут отличаться.

В крайне маловероятном случае, если они действительно равны, попробуйте удалить все из этих двух программ, которые не влияют на этот вывода затем опубликовать его на connect.microsoft.com и ссылку здесь.Тем не менее, обратите внимание, что программы, длина которых превышает 100 строк, почти наверняка сводятся далее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...