1.今天在做一个例子的时候,发现后台不能正确接收中文的url参数,试了各种解决办法都不可以。
以下是代码:
Controller:
package com.springapp.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap model) {
model.addAttribute("message", "Hello world IDEA!");
model.put("content","This is my first springmvc web");
return "index";
}
@RequestMapping(value = "/page/{name}/{age}",method = RequestMethod.GET)
public String getName(ModelMap modelMap, @PathVariable("name") String name, @PathVariable("age") int age) {
modelMap.addAttribute("name",name);
modelMap.addAttribute("age",age);
return "name";
}
}
name.jsp
<%@ page pageEncoding="UTF-8" language="java" %>
名字:${name}
年龄:${age}
web.xml
Spring MVC Application
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
mvc-dispatcher
/
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
大部分解决方式楼上都已经讲得比较清楚了。我把3种方式整理一下吧
Tomcat 可以直接配置
URIEconding="UTF-8"new String("中文".getBytes("ISO-8859-1"), "UTF-8");将中文使用
URLEncoder编码如:baidu.com/s?wd=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C这3种方式都可以解决中文URL乱码问题。
get提交用 string类的构造方法
有没有debug下看后台接收到的数据是乱码?还是到数据库乱码了?两者是不同的情况,前者可以尝试
request.setCharacterEncoding方法,并且用new String(para.getBytes(“ISO-8859-1”),“UTF-8”对参数进行转码试试,如果看到后台的不是乱码,到数据库乱码那就看数据库链接上是不是忘了加enConding…我的做法是
容器的字符集指定了吗
可以在前端用Base64编码后传到后台解码
@RequestMapping(value = "/xxx", method = RequestMethod.GET, headers = {"content-type=application/json;charset=UTF-8"}, produces = {"application/json;charset=UTF-8"})