使用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="server=localhost;user id=root;password=******;persistsecurityinfo=True;Character Set=utf8;
database=shove_scs"" providerName="System.Data.EntityClient"/>
测试发现确实有效。这就说明添加编码确实可以解决乱码问题。
解决方案2参考文章:http://blog.sina.com.cn/s/blog_4c8b1bdd0102vpal.html
使用EF操作Mysql数据库中文变问号的解决方案的更多相关文章
- MySQL数据库中文变问号
原文参考:http://www.linuxidc.com/Linux/2017-05/144068.htm 系统是的Ubuntu 16,修改以下配置 1.sudo vi /etc/mysql/my. ...
- c#操作MySQL数据库中文出现乱码(很多问号)的解决方法
前题:修改discuz论坛帖子老连接(从NT版转到PHP版的discuzX3),帖子里有很多引用,有链接都是.aspx这样的链接. 需要将这些链接改到当前论坛的链接. 思路:用asp.net程序获取含 ...
- DOS命令行操作MySQL数据库中文乱码问题解决
我们在 dos 命令行操作中文时,会报错 ’); ERROR (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 原因:因为 ...
- ASP.NET Core使用EF Core操作MySql数据库
ASP.NET Core操作MySql数据库, 这样整套环境都可以布署在Linux上 使用微软的 Microsoft.EntityFrameworkCore(2.1.4) 和MySql出的 MySql ...
- Dapper操作MySQL数据库获取JSON数据中文乱码
前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...
- EF 连接MySQL 数据库 保存中文数据后乱码问题
EF 连接MySQL 数据库 保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...
- 解决Linux系统下Mysql数据库中文显示成问号的问题
当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打 ...
- 以EF形式操作mysql数据库
1.引入Nuget包: 2.书写EF操作上下文 public class MySqlContext:DbContext { protected override void OnConfiguring( ...
- asp.net:录入数据库的中文变问号
表格是可以接受中文的: 类型也是nvarchar的: 还是出现写中文变问号?? 这时候请加入转义大写N: 如: 原查询语句:insert into table1(name) values('蜘蛛侠' ...
随机推荐
- CustomDialog——一个多功能、通用、可自定义的Dialog
CustomDialog--一个多功能.通用.可自定义的Dialog 依赖 compile 'com.github.SiberiaDante:CustomDialog:v1.0.1' 说明[Cus ...
- POJ--3172 Scales (DFS 大容量背包 C++)
Scales Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3148 Accepted: 851 Description ...
- Hibernate的Configuration对象的configure()方法
Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure( ...
- phoenix
phoenix(直译做凤凰)的操作sql是通过jdbc发送到HBase的.phoenix的查询语句会转化为hbase的scan操作和服务器端的过滤器.如果我们手工使用HBase的api去写这些代码,也 ...
- angular学习笔记03 理论加实践
novalidate 属性是在 HTML5 中新增的.禁用了使用浏览器的默认验证. //augular.js自定义指令 .directive('runoobDirective',function(){ ...
- TOP命令详解(负载情况)
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- Android Studio 导入应用时报错 Error:java.lang.RuntimeException: Some file crunching failed, see logs for details
在app文件夹的build.gradle里加上 android { ...... aaptOptions.cruncherEnabled = false aaptOptions.useNewCrunc ...
- php版本的选择
简单来说non-thread-safe 非 线程安全 与IIS 搭配环境,thread-safe 线程安全 与apache 搭配的 环境这个大家一定要注意,否则用错了版本,apache是无法启动的,另 ...
- Centos7下安装php7
通过编译的方式安装php7 1. 安装PHP7 ## 下载 wget http://us2.php.net/distributions/php-7.0.2.tar.gz ## 安装 tar zxvf ...
- ch3-模板语法({{}} v-html v-bind:id 表达式 指令 修饰符 过滤器)
1 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. 所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器 ...