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

时间:2016-01-29 11:07:40

标签: c# encoding

我有字符串“离开”“来看看为什么”,用相同的代码

string input= myString;
Byte[] latin1 = Encoding.GetEncoding(28591).GetBytes((input));
output= Encoding.UTF8.GetString(latin1);

当myString是程序中的硬编码时,它返回正确的值“离开 - 来看看为什么”。但是当myString从数据库获取时,它返回错误。

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

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

1 个答案:

答案 0 :(得分:0)

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

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