Skip to main content
 Web开发网 » 数据库教程 » mysql教程

解决springmvc+mybatis+mysql中文乱码问题(转载)

2021年08月11日5930百度已收录

  近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码

  最初在mybatis配置如下

  <select id="queryContentById" resultType = "java.lang.String" parameterType="String" >

  select text from News where id=#{o}

  </select>

  其中表News的text字段为blob类型

  如此查出的text值在控制台中一直显示乱码。

  之后google查找相关resultType=blob相关内容无果,遂将其改为resultType = "java.util.Map" ,且

  1

  2

  byte[] b = (byte[]) map.get("text");

  String s = new String(b,"utf-8");

  打印出s,此时中文正常显示,但页面显示依旧乱码。

  因此处为ajax请求,遂检查响应头信息,查出如下

  1

  Content-Typetext/html;charset=ISO-8859-1

  由于数据库中统一为编码为utf-8,故修改响应头信息

  @RequestMapping(value = "/queryContentById", method = RequestMethod.GET,produces = "text/plain;charset=UTF-8")

  public @ResponseBody String queryContentById(@RequestParam("id") String id) throws SQLException, UnsupportedEncodingException {

  Map map = (Map) ndrService.queryContentById(id);

  byte[] b = (byte[]) map.get("text");

  String s = new String(b,"utf-8");

  return s;

  我们再来看下另外一个示例的问题

  1、SpringMVC的Controller得到的是乱码:

  (1)在web.xml加上字符集过滤器:

  代码如下:

  <!-- Spring字符集过滤器 --> <filter> <filter-name>SpringEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SpringEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

  (2)在JSP等页面上修改:charset=UTF-8"和pageEncoding="UTF-8"

  2、Controller读取到的是正确的中文,但是保存到数据库后变成“??”

  (1)修改数据库连接jdbc_url=jdbc:mysql://localhost:3306/mybatistest?useUnicode=yes&characterEncoding=UTF8("&":在xml文件中表示"&")

  (2)修改数据库的字符集为utf-8:打开mysql根目录下my.ini(mysql5.6为my-default.ini,要把它copy一份命名为my.ini),在下面具体位置添加(或修改):

  代码如下:

  [mysqld]character-set-server=utf8 [client]default-character-set = utf8[mysql]default-character-set = utf8

  这样设置在我这边就没什么问题了。

  

上一篇: MySql数据库操作

下一篇: mysql安装6

评论列表暂无评论
发表评论
微信