/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • 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中文语言包安装失败导致无法使用的问题
  • VS重构重命名的快捷键
  • Discuz!NT Flash无法上传头像,点击上传后无任何反应
  • ASP.NET 动态输出404 HTTP状态代码
  • 分享一个MIME Types大全网址
  • C# String.Substring(Int32, Int32)超出长度是否会出错

文章分类

.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重构重命名的快捷键

推荐文章

  • Visual Studio Code 格式化文档的快捷键
  • 一次头疼的IIS故障经历:IIS 8.5的URL重写模块无法正常运行
  • OneNote如何取消共享笔记和删除邀请的用户
  • 解决服务器80端口监听异常导致无法打开和访问网站的问题
  • 龙游浅水遭虾戏,虎落平阳被犬欺出处

友情链接

  • Passingwind的博客
  • 码友网

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