SpringMvc 中从前台页面传参数到后台获取时中文乱码解决方法
程序员文章站
2022-03-02 11:45:06
...
在web.xml中配置了CharacterEncodingFilter过滤器,但传到后台的数据还是乱码,
核查用户名中文无法重复校验,英文的话运行正常
1. 采用相同的格式去接受(ISO-8859-1),然后用UTF-8去转换
byte[] bytes= empName.getBytes("ISO-8859-1");
empName=new String(bytes,"UTF-8");
tomcat的自带编码是ISO-8859-1的格式,是不兼容中文的编码的。所以我们从后台接收的时候要注意。
@ResponseBody
@RequestMapping("/checkuser")
public Msg checkUser(@RequestParam("empName") String empName) throws UnsupportedEncodingException {
byte[] bytes= empName.getBytes("ISO-8859-1");
empName=new String(bytes,"UTF-8");
//先判断用户名是否是合法的表达式
//java 里面的正则表达式没有/
//var regName=/(^[a-z0-9_-]{6,16}$)|(^[\u2E80-\u9FFF]{2,5})/;
String regx="(^[a-z0-9_-]{6,16}$)|(^[\\u2E80-\\u9FFF]{2,5})";
if(!empName.matches(regx)){
return Msg.fail().add("va_msg","用户名为6-16为英文或2-5位中文");
}
//数据库用户名重复校验
boolean b=employeeService.checkUser(empName);
System.out.println(empName);
System.out.println(b);
//查询中文名count()计数出错
if(b){
return Msg.success();
}else{
return Msg.fail().add("va_msg","用户名不可用");
}
}
控制台输出正确,重复校验结果正确
2. 修改了tomcat目录中conf里面的server.xml
D:\work20\apache-tomcat-7.0.104-windows-x64\apache-tomcat-7.0.104\conf\server.xml
添加 URIEncoding="UTF-8"
<Connector
URIEncoding="UTF-8"
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"/>
此时进行用户名重复校验,中文控制台输出正确,校验结果正确
注:
参考:
上一篇: Unity中场景加载两种方式