c# - 数据库上的字符串编码失败
问题描述
我遇到了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
. 任何的想法?
提前感谢您的帮助。
解决方案
假设你的字符串来自一个 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 驱动程序
推荐阅读
- python - PyQt5 QWebEngine 对 Javascript 的错误渲染
- python - 我们如何在 sympy 中分离方程较小的分离方程
- wordpress - 首页上的WordPress分页不起作用
- jenkins - 使用“kubectl apply”命令滚动更新
- jenkins - 是否可以为 jenkins github 组织构建设置构建丢弃选项?
- javascript - 如何防止操作覆盖覆盖材料表中的可编辑 onRowAdd 按钮?
- python - 如何替换目录中每个文件中的字符串
- c# - 启用可靠会话时 WCF ContractFilter 不匹配
- ruby-on-rails - 参数数量错误 - resque
- java - 以编程方式提取方法的内容