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

标签 c# mysql encoding

我遇到了 string 编码问题,实际上我从一个 Internet 站点得到了这个名称:CENTRE ESPORTIU D'ALÀS 我正试图将其保存到我的D B。实际上数据库表编码设置为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。有什么想法吗?

在此先感谢您的帮助。

最佳答案

假设你的字符串来自一个 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 驱动程序

关于c# - 字符串编码在数据库上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320912/

相关文章:

C# - 修改 button.click 事件以传递数据?

c# - 使用 ASP.NET MVC 和 Access 的 Intranet 表单

Mysql多列索引使用错误的索引

mysql - 将查询的所有结果插入表中

python-2.7 - Python Raw-Unicode-转义编码

r - 避免在 R 中进行 url 编码

c# - 什么是组播端口号?

mysql - CONCAT 与 ROLLUP

c# - 编码 UTF8 C# 过程

c# - EF 不断尝试保留无效对象