0

我有一个 MySQL 数据库,latin1_swedish_ci当我尝试选择某些内容时,select 返回如下字符串:

ტáƒáƒ‘ი მáƒáƒ™áƒ’უáƒáƒ˜áƒ áƒ˜, კირსტენ დáƒáƒœáƒ¡áƒ¢áƒ˜, ჯეიმს ფრáƒáƒœáƒ™áƒ

这是我的代码:

string db = "server=xxx;database=xxx;uid=xxx;password=xxx;charset=utf8;";
MySqlConnection con = new MySqlConnection(db);
con.Open();
MySqlCommand cmd = new MySqlCommand("SET NAMES utf8; SELECT * FROM `xxx`", con);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
     string source = reader.GetString("xxx");
     byte[] utf8Bytes = Encoding.UTF8.GetBytes(source);
     byte[] isoBytes = Encoding.Convert(Encoding.ASCII, Encoding.UTF8, utf8Bytes);
     string uf8converted = Encoding.UTF8.GetString(isoBytes);    
}

我究竟做错了什么?请帮忙。

4

1 回答 1

0

我知道这个问题已经有一年了,但我遇到了同样的问题并找到了解决方案:

string source = reader.GetString("xxx");
Encoding enc = Encoding.GetEncoding(1252);
byte[] data = enc.GetBytes(source);
string uf8converted = Encoding.UTF8.GetString(data);

latin1_swedish_ci编码为西欧(不是 ASCII),因此我们将字节硬编码为 UTF8 :)

于 2015-01-18T08:48:36.133 回答