System.Text.Encoding.UTF8.GetBytes(s)同一台计算机上的字符串的不同值,不同的程序

时间:2010-09-06 20:39:23

标签: c# string encoding

我正在做一个

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

在使用.NET 2.0框架的两个不同程序(一个控制台,一个Web)中的字符串上,编码与两者不同。对于字符串“everything”,我得到相同的结果,但对于字符串“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 个答案:

答案 0 :(得分:6)

您提到您从其中一个程序获得的UTF-8是6f6e693375777563。这会解码回"oni3uwuc"。换句话说,你的另一个程序在UTF-8编码之前小写所有字母。

答案 1 :(得分:0)

这极不可能。对两个字符串使用File.WriteAllText("C:/file1.txt", s),并仔细比较它们。他们不同。

在极不可能的情况下,它们实际上是相同的,请尝试从这两个不影响此输出的程序中删除所有,然后将其发布在connect.microsoft.com上,并链接这里。但请注意,超过100行的程序几乎肯定可以进一步减少。