我有字符串“离开”“来看看为什么”,用相同的代码
string input= myString;
Byte[] latin1 = Encoding.GetEncoding(28591).GetBytes((input));
output= Encoding.UTF8.GetString(latin1);
当myString是程序中的硬编码时,它返回正确的值“离开 - 来看看为什么”。但是当myString从数据库获取时,它返回错误。
补充信息:当我更改代码文件的编码时,硬编码版本也会得到错误的结果,我不知道为什么?
数据库中的字符串与硬编码100%相同。当我调试硬编码中的输入和数据库中的输入是相同的时,只有输出不一样:(
答案 0 :(得分:0)
首先将字符串编码为ISO 8859-1 Latin 1(代码页28591),然后将其解码为Unicode(UTF-8)。这将适用于字符表的下半部分,但可能不适用于表格较高部分中的所有字符 - 重音符号,特殊字符,因为这些字符在这两个代码页中具有不同的字节代码。
正确的方法是使用相同的代码页进行编码和解码。