字符串编码失败

ltskdhd1  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(367)

我遇到了一个问题 string 编码,实际上我从一个网站上得到这个名字: CENTRE ESPORTIU D'ALÀS 我想把这个保存到数据库里。实际上,数据库表编码设置为 utf8_unicode_ci (使用mysql工作台)。
当我将它存储在数据库中时,我会得到: 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();
    }
}

正如我在db里说的,我得到: Centre Esportiu d'Al\u00e0s . 你知道吗?
提前谢谢你的帮助。

p3rjfoxz

p3rjfoxz1#

假设你的字符串来自一个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);

编辑:我不确定您是否可以用该解决方案解决问题,但请尝试按以下方式编辑您的连接字符串:

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

这样你就可以使用ansi驱动程序了

相关问题