【问题标题】:MySQL charset=UTF-8 with ConnectionReset=True is not workingMySQL charset=UTF-8 与 ConnectionReset=True 不工作
【发布时间】:2018-04-21 12:02:26
【问题描述】:

我有一个如下所示的连接字符串

"Server=localhost;Uid=root;Pwd='abcd';Database=testdb;charset=utf8;ConnectionReset=True;"

任何插入到数据库表列中的 unicode 字符都将作为特殊字符插入。如果我删除“ConnectionReset=True;”,一切正常从我的连接字符串。 知道这里发生了什么吗?

注意:我相信我的代码很好,因为当我从连接字符串中删除 ConnectionReset=True; 部分时,插入 unicode 很好。

【问题讨论】:

  • 知道这里发生了什么吗?不!...连接字符串在哪里定义它是一种编程语言吗?
  • 当然是。带有实体框架的 C# .net 核心
  • 您应该在使用此连接字符串的地方包含一些 C# 代码。我已经用额外的标签更新了问题。
  • 请查看更新后的问题
  • 我的问题是 charset 和 connectionreset 属性之间存在冲突

标签: c# mysql entity-framework utf-8 character-encoding


【解决方案1】:

您遇到MySQL Bug #85185:“ConnectionReset 池选项不保留 CharSet 选项值”。

使用ConnectionReset=true 是个好主意;但是,这具有将连接字符集重置为服务器默认值的副作用,这不是您想要的。我可以想到两种解决方法:

  1. 使用 MySqlConnector,一个替代 ADO.NET MySQL 连接器库,可修复此(以及许多其他)连接器/NET 错误
  2. 在每次调用connection.Open() 后执行connection.ExecuteNonQuery("SET NAMES utf8mb4");。这将在连接从池中返回时重置连接后修复连接字符集。

最后,MySQL utf8 字符集不是实际上是UTF-8,所以use utf8mb4 instead

【讨论】:

    猜你喜欢
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多