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

本文关键字:字符串 数据库 获取 编码 不相等 解码 编码字符 | 更新日期: 2023-09-27 18:32:29

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

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

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

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

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

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

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

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