/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

C#中特殊字符存入MySql报错“ERROR 1366: Incorrect string value“

2017-06-26 十有三 0 浏览:1万+ .NET技术 C# | MySql

在开发某个.NET项目的过程中,遇到了UTF-8编码的特殊字符在插入到GBK编码的MySql数据库时,引发了这样的错误:ERROR 1366: Incorrect string value: '\xE2\x80\xA2\xE7\x8A\xB6...' for column 'title' at row 2。

由于我对MySql也不熟,鼓捣了一阵才解决。这个问题还是比较常见的,根据我自身的情况,关键的地方或者说引发异常的条件是这几个:

  1. UTF-8编码的特殊字符
  2. MySql采用的是GBK编码,特别要留意数据库/表/字段这三个不同级别的字符集编码
  3. 在1和2条件满足的情况下,将数据insert或update到数据库中。

问题最根本的原因在于某些UTF-8编码的特殊字符对于GBK来说是无法识别的,如果在C#中强行转换会变成“?”问号之类的奇怪符号,所以这部分数据在添加到MySql的时候引发了Incorrect string value。

解决方法一:从代码入手,处理问题数据,删除特殊符号

这种方法不用对数据库做任何操作,可以保留数据库原本的GBK编码格式,只要在问题数据要添加或修改进数据库之前进行操作,通过正则表达式将所有GBK不支持的UTF8符号替换掉!

另外还有一个思路就是强行转换编码,不过就如上面所说,强行转换这部分字符会变成问号或其他一些奇怪的符号。我当时试了下没有成功,数据插入到MySql依然报错,所以还是采用删除的方法。

具体代码如下,代码在控制台程序中运行(案例代码中就有两个特殊符号):

string content = "测•试�字符";
Console.WriteLine(content);

var regex = new Regex(@"[^\u4E00-\u9FA5\u3000-\u303F\uFF00-\uFFEF\u0000-\u007F\u201c-\u201d]", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
content = regex.Replace(content, "");
//content=content.Replace("�", "").Replace("•", "");

Console.WriteLine(content);
Console.ReadKey();

备注:代码也可以从github上查看,最后执行结果如下图。

代码执行结果

上面代码中的正则是我在网上找到的,对于我遇到的问题来说是足够用了,已经包含了很多UTF8的特殊字符。如果有遗漏,还可以用土一点的办法,用Replace替换掉特殊符号。

解决方法二:从数据库入手,统一编码设置

主要就是将MySql的库/表/字段编码都设置成utf8,这样就能包容要添加的特殊字符了。

这个方法局限性比较大,毕竟有时候数据库是没办法随意更改的。另外在MySql中,除了utf8外,还有utf8mb4这种格式的编码,网上有篇遇到emoji表情存入数据库引发Incorrect string value异常的文章,主要就是这两种编码引发的问题,可以参考下。


版权声明:本文由十有三创作,采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请务必署名-保留作者名称及出处:https://shiyousan.com/post/636340896985738820。


  • 上一篇: WIN10 添加美式键盘并设置为默认输入法
  • 下一篇: Win10更新后右键开始菜单的控制面板不见了

相关文章
  • Visual Studio Community 2013英文版安装中文语言包步骤
  • ASP.NET MVC如何实现带www域名重定向到不带www顶级域名
  • ASP.NET 301跳转或者进行301重定向/转向的方法
  • 发布BlogEngine.NET 3.3.5.0 出现 HTTP 错误 404.2 和404.0
  • 解决vs2010添加项目后解决方案资源管理器中没有显示解决方案的问题
  • 解决IIS ASP.NET 网站发布后出现错误 Unable to connect to any of the specified MySQL hosts

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • 解决OneNote安卓版同步到Windows版出现中文乱码
  • 分享outlook红色感叹号/设置重要性的使用技巧
  • Avira小红伞如何添加白名单?
  • 解决IIS出现HTTP错误500.19:工作进程无法读取 applicationhost.config 或 web.config 文件
  • ASP.NET MVC 5 学习笔记之FilterConfig类

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号