zoukankan      html  css  js  c++  java
  • 使用EF操作Mysql数据库中文变问号的解决方案

    问题场景:使用Entity Framework 6.0 操作Mysql数据库,中文保存至数据库后全部变成问号。但是使用Mysql API却不会。

    原因排查:首先想到的肯定是数据库编码问题,一次查询了表、字段的编码,发现都是UTF8,这就说明表及字段的编码没有问题。第二步,查看数据库的编码:

    show VARIABLES like 'char%';

              结果:

                  

              果然如我们所料,数据库的编码是默认的latin1编码,而不是utf-8。

    解决方案:1、首先想到的可能是修改数据库的编码,具体的修改方法参考博文:http://www.cnblogs.com/houqi/p/5713176.html 。

              2、因为前文我们提到过,使用Mysql API可以正常插入中文,为什么会这样呢?我去检查了一下Mysql的数据库连接字符串:

    <add key="ConnectionString" value="server=127.0.0.1;Uid=root;Pwd=******;Database=shove_scs;port=3306;charset=utf8;Allow User Variables=True"/>

                 我们可以发现,里面的charset=utf8就是指定了操作数据库所使用的编码。由此我们想到,我们是不是可以在EF的链接字符串中同样的添加编码呢。试试:

    <add name="Entities" connectionString="metadata=res://*/EdmxModel.SnapsModel.csdl|res://*/EdmxModel.SnapsModel.ssdl|res://*/EdmxModel.SnapsModel.msl;
         provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;password=******;persistsecurityinfo=True;Character Set=utf8;
         database=shove_scs&quot;" providerName="System.Data.EntityClient"/>

                 测试发现确实有效。这就说明添加编码确实可以解决乱码问题。

    解决方案2参考文章:http://blog.sina.com.cn/s/blog_4c8b1bdd0102vpal.html

  • 相关阅读:
    导出excel
    JS一些记录
    Concat
    (二)《SQL进阶教程》学习记录--GROUP BY、PARTITION BY
    PostgreSQL 时间转换
    vlc+flv.js 摄像头 H5 直播
    echarts label formatter params backgroundColor rich 标签设置背景图并传参
    异步、多线程、Await/Async、Task
    “2+3”等于我的自白
    SignalR:React + ASP.NET Core Api
  • 原文地址:https://www.cnblogs.com/wangwust/p/6806065.html
Copyright © 2011-2022 走看看