通过ASP.NET在MySql4中插入unicode文本

时间:2013-08-12 12:15:34

标签: asp.net mysql unicode utf-8

我正在为一个拥有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();

现在,当我读一个地址时,我得到的是这样的:زÙجاÙ

幸运的是我使用函数blew解决了它:

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);
}

现在我将junky字符串发送到函数中,我得到了正确的形式:زنجان(波斯语)

问题在于,当我想更新或插入地址字段时,除了一些问号之外,数据库中不会存储任何内容: ???? ?????

任何人都知道我该怎么办?! DecodeFromUtf8函数有反转形式吗?

请原谅我糟糕的英语, 感谢。

1 个答案:

答案 0 :(得分:1)

我不知道这是否有助于解决问题,但DecodeFromUtf8的反面看起来应该是这样的:

public string EncodeToMySQL4(string str)
{
   Encoding latin1 = new Encoding(1252);
   return latin1.GetString(Encoding.UTF8.GetBytes(str));
}