字符串编码在数据库上失败

时间:2018-07-13 08:30:50

标签: c# mysql encoding

我遇到了string编码的问题,实际上我是从Internet站点获得的名称:CENTRE ESPORTIU D'ALÀS,并且我试图将其保存到数据库中。实际上,数据库表编码已设置为utf8_unicode_ci(使用MySQL WorkBench)。

当我将其存储在数据库中时,将得到:Centre Esportiu d'Al\u00e0s

为了创建连接,我使用以下代码:

MySqlConnectionStringBuilder conn = new MySqlConnectionStringBuilder();
conn.Server = "localhost";
conn.Database = "sample";
conn.UserID = "root";
conn.Password = "root";
conn.CharacterSet = "utf8";
conn.Port = json.Port;

MySqlConnection connection = new MySqlConnection(conn.ToString());
connection.Open();

我通过以下方式存储值:

using (MySqlConnection connection = new DBConnection().Connect())
{
    using (MySqlCommand command = new MySqlCommand())
    {
        command.Connection = connection;
        command.CommandText = "INSERT INTO venue (name) VALUES (@name)";
        command.Parameters.AddWithValue("@name", "CENTRE ESPORTIU D'ALÀS");
        command.ExecuteNonQuery();
    }
}

正如我在数据库中所说的,我得到:Centre Esportiu d'Al\u00e0s。有想法吗?

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

假设您的字符串来自txt文件,请在notepad ++上将其打开,然后在右下角看到文件编码。 为此,您可以使用下面的代码正确地“读取”您的字符串:

Encoding enc = Encoding.GetEncoding("ENCODE_FROM_NOTEPAD++");
byte[] enc_bytes = Encoding.Convert(Encoding.UTF8, enc, Encoding.UTF8.GetBytes(your_str_initial_value));
string msg = enc.GetString(enc_bytes);

EDIT :我不确定您是否可以使用该解决方案解决问题,但是尝试按如下所示编辑连接字符串:

Driver={MySQL ODBC 5.2 ANSI Driver}; //5.2 is your MySQL version

使用ansi驱动程序