我正在为一个拥有 4000 个存储在 MySql4 中的用户的研究所编写一个新网站!
我正在使用 mysql-connector/net 通过 asp.net 连接到 MySql 数据库,
一切正常,除了更新 unicode 模式的信息!
不幸的是,我对 unicode 了解不多!
从 MySql 数据库连接和读取数据是这样的:
using MySql.Data.MySqlClient;
...
MySqlConnection con;
MySqlCommand cmd;
string tempstr = "Database=DB-NAME;Data Source=SOURCE;charset=utf8;User Id=USER;Password=PASS";
con = new MySqlConnection(tempstr);
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = "select * from list_membership";
cmd.CommandType = CommandType.Text;
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
现在,例如,当我阅读地址时,我会得到这样的信息:زÙجاÙ
幸运的是,我已经使用自爆功能解决了它:
public string DecodeFromUtf8(string utf8String)
{
// copy the string as UTF-8 bytes.
byte[] utf8Bytes = new byte[utf8String.Length];
for (int i = 0; i < utf8String.Length; ++i)
{
//Debug.Assert( 0 <= utf8String[i] && utf8String[i] <= 255, "the char must be in byte's range");
utf8Bytes[i] = (byte)utf8String[i];
}
return Encoding.UTF8.GetString(utf8Bytes, 0, utf8Bytes.Length);
}
现在我将垃圾字符串发送给函数,我得到了这样的正确形式:زنجان(波斯语)
问题是,例如,当我想更新或插入地址字段时,除了像这样的一些问号之外,什么都不会存储在数据库中:???? ???
有谁知道我该怎么办?!DecodeFromUtf8 函数是否有任何反向形式?
原谅我的英语不好,谢谢。