今天做一个关于ssm的项目,数据库用的是MySQL,但是遇到一个比较奇葩的乱码问题,数据库里面存的中文取出来变成了问号,存进去的中文也变成了问号,但是手动添加到数据库中的中文取出来又是显示正常的。一路查了很多资料,终于解决了,然后加上自己的分析,整理了一下思路。

乱码问题出现的情况有很多种,针对web开发这一流程来说,可以根据数据的流向来定位乱码出现的位置。前台发起一个请求,数据通过http协议到后被接收,这里数据会进行一次编码,在ssm环境下,是springMVC来拦截请求进行处理,所以在springMVC中能配置数据的编码格式,springMVC提供的是一个filter,在web.xml中配置。

springfilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

springfilter

/*

如果经springMVC拦截的中文参数没有出现乱码,则说明这里的编码没有出现问题,然后进一步去分析数据的流向。ssm的环境下是mybatis框架与数据库进行交互,mybatis本身对数据不会进行编码,但是在与数据库交互的时候会有编码的问题,比如在jdbc配置的时候,数据库连接这里有一个编码的参数需要配置。

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8

username=root

如果以上的配置都确定没有问题和,那么很大可能性就是数据库乱码了,在新建数据库的时候需要选择一个数据的编码方式。

这里如果也没有问题那就可能就我碰到的问题,数据库存的中文变成问号。在MySQL的安装目录(默认在C:\Program Files\MySQL\MySQL Server 5.x)修改my.ini可以解决。mysql中文显示乱码或者问号是因为选用的编码不对或者编码不一致造成的,我是通过修改my.ini配置文件解决了中文变问号的问题。5.7之后没有这个配置文件。

在[client]节点下添加  default-character-set=utf8

在[mysqld]节点下添加 (注:collation是排序方式)

character-set-server=utf8

collation-server=utf8_general_ci

修改完my.ini文件后,需要重启MySQL服务,在cmd中输入以下命令可以启动或关闭MySQL的服务,也可以在任务管理器--->服务 中手动关闭或开启。

关闭服务 net stop mysql

开启服务 net start mysql

最后可以登录MySQL看看配置是否成功。

输入 mysql -u root -p      进入mysql数据库,如果输入这个命令显示MySQL不是一个命令,需要把MySQL安装目录下的bin 这个路径配到环境变量中去,就可以使用这个命令登录MySQL。

输入密码:*****

show variables like 'char%';  显示编码格式

如果都为utf8那就说明配置成功,再去看看乱码问题解决了没。

为什么vs数据库中文显示问号_数据库插入中文变成问号相关推荐

  1. mysql phpmyadmin 空_请教插入中文到MYSQL,但phpmyadmin却显示空白,该怎么办?

    请教插入中文到MYSQL,但phpmyadmin对应字段却显示空白,该怎么办? 回复讨论(解决方案) 在哪插入的? 问题没表述清楚 看看是不是变量名写错了 问题说的不够清楚.可能压根就没插入进去,另外 ...

  2. linux 中文小方块,debian系统中文显示方块数字字母及黑块问号的解决办法

    debian系统中文显示方块数字字母及黑块问号的解决办法 在安装debian系统的时候如果选择使用中文作为操作系统的字体,但在安装过程中并没有联网进行同步更新,那么很可能在debian系统安装成功以后 ...

  3. mysql使用中文报错,hibernate mysql 插入中文错误

    hibernate mysql 插入中文错误 使用hibernate mysql 插入中文错误: 原因之一是: mysql 的字符编码和hibernate传递的编码不一样, 例如: mysql 建库的 ...

  4. mysql向表中插中文显示,针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav...

    针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决jav 针对mysql数据库无法在表中插入中文字符的解决方案(彻底解决:java.sql.SQLException: Incorrect ...

  5. mysql执行语句出来全是问号_解决MySQL中文输出变成问号的问题

    解决MySQL中文输出变成问号的问题 于是我在程序中加入:mysql_query("SET NAMES GB2312");问题迎刃而解.主要是一个编码问题. 注意这句代码的插入位置 ...

  6. mysql实验四数据库查询和视图_数据库-第四次实验报告-视图-t-sql语句

    实验十报告 创建视图 实验目的 1.掌握创建视图的SQL语句的用法. 2.掌握使用企业管管理器创建视图的方法. 3.掌握使用创建视图向导创建视图的方法. 4.掌握查看视图的系统存储过程的用法. 5.掌 ...

  7. mysql数据库设计四大范性_数据库篇-mysql详解( 四 )之范式与数据高级骚操作

    标题.png 一 : 主键 primary key,主要的键. 一张表只能有一个字段可以使用对应的键, 用来唯一的约束该字段里面的数据, 不能重复: 这种称之为主键.一张表只能有最多一个主键 操作 增 ...

  8. php把中文写入mysql_PHP向mysql插入中文乱码问题,php文件内容写入数据库!

    再用php向mysql中插入中文时常常遇到乱码问题!下面给出我的解决办法,希望能解决你的问题 我的是在apmserv的环境下! 数据库操作:CREATE TABLE `v` ( `id` int(6) ...

  9. mysql数据库水平拆分例子_数据库水平拆分

    数据库拆分 垂直拆分 数据库垂直拆分就是要把表按模块划分到不同数据库中.微服务架构中每个服务拥有自己独立的数据库,就是典型的垂直拆分.通俗说,就是根据业务类型,把一个数据库中的多张表拆分到多个数据库中 ...

最新文章

  1. R假设检验之Shapiro检验(正太分布判断)
  2. Eclipase +PyDev(64位) 配置使用
  3. C语言自学《四》---- 循 环
  4. Java基础super关键字、final关键字、static关键字、匿名对象整理
  5. 从ngrx store里selector出来的Observable,执行subscribe的单步调试
  6. 【Kafka】Failed to send data to Kafka: Failed to update metadata after 60000 ms
  7. python盒中取球_在Python中找到占据给定球的盒子的位置
  8. 在.NET环境中实现每日构建(Daily Build)--ccnet,MSBuild篇
  9. 微软将VB和C#合二为一 年底推出全新平台VS2010
  10. Java接口组装一台计算机编写各组件厂商分别实现CPU,EMS,HardDisk接口
  11. HCIE 面试 ----- OSPF
  12. Visual Studio 番茄助手 安装问题
  13. 点云文件常用格式转换(pcd,txt,ply,obj,stl)
  14. 【MT7620】MT7620 WiFi驱动增加无线终端连接实时协商速率功能
  15. 2018年7月18日日报
  16. JQ获取元素的父子兄弟级
  17. 京东商城CEO徐雷年会演讲:我们抗住风霜 业务基本面良好
  18. Python-提升爬虫速度三种方式
  19. 西门子PLC与昆仑通态触摸屏恒压供水程序,使用ABB变频器4 85接口通过Modbus协议进行通讯和控制
  20. SEO资源生态圈是什么(SEO资源生态圈如何建设呢)

热门文章

  1. 计算机学院实验员岗位基本知识,实验室人员岗位职责
  2. HttpEntity的类型及其使用
  3. FFmpeg学习之路:Linux下安装编译
  4. windows7部署hitchhiker
  5. 最强旅游攻略 | 用Python分析国庆中秋最佳旅游景点 (文末福利)
  6. 使用高通 Qfile 刷版本
  7. 远程控制之原理和实战
  8. 华为机试:字符串比较
  9. (enjoyment,basketball)随便说说我们的NBA
  10. Kdevelop的安装与汉化