C#硬编码字符串和使用从数据库获取的字符串时解码字符串不相等

C#硬编码字符串和使用从数据库获取的字符串时解码字符串不相等,c#,encoding,C#,Encoding,我有一个字符串“LeveÃÃeu”come see why,代码相同 string input= myString; Byte[] latin1 = Encoding.GetEncoding(28591).GetBytes((input)); output= Encoding.UTF8.GetString(latin1); 当myString是程序中的硬代码时,它返回正确的值“left-come see why”。但当myString从数据库中获取时,它返回错误的值 附加信息:当我更改代码文

我有一个字符串“LeveÃÃeu”come see why,代码相同

string input= myString;
Byte[] latin1 = Encoding.GetEncoding(28591).GetBytes((input));
output= Encoding.UTF8.GetString(latin1);
当myString是程序中的硬代码时,它返回正确的值“left-come see why”。但当myString从数据库中获取时,它返回错误的值

附加信息:当我更改代码文件的编码时,硬代码版本也会得到错误的结果,我不知道为什么


数据库中的字符串和硬代码中的字符串100%相同。当我调试硬代码中的输入和数据库中的输入时,只有输出不同:(

首先将字符串编码为ISO 8859-1 Latin 1(代码页28591),然后将其解码为Unicode(UTF-8)。这将适用于字符表的较低部分,但可能不适用于表较高部分的所有字符-重音符号、特殊字符,因为这些字符在这两个代码页中具有不同的字节码


正确的方法是使用相同的代码页进行编码和解码。

您的数据库是否设置为正确存储unicode字符?您是否检查过从数据库返回的原始字符串-是否完全相同?是的,它是100%相同。当我调试以查看值时,它仍然相同,只是结果不同相同:(你试过用代码比较硬编码字符串和数据库中的字符串吗?是的,它是100%相同的。当我调试时,看到值仍然相同,只是结果不一样。出于好奇,你使用的是什么数据库?但它们都是相同的字符串。当我更改代码文件的编码时。硬编码版本也会得到错误的结果书信电报