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

この質問は1年前のものであることは知っていますが、同じ問題があり、解決策を見つけました:

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 に答える