解决问题的思路:
1、分析比对http请求头,contentType等设置
2、前段编码,后端解码,这个方式比较落麻烦,凡是有中文乱码的地方都要进行解决
3、修改Tomcat的默认编码,tomcat8以下默认编码是"iso8859-1",tomcat8默认编码是“UTF-8”
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />
4、查看应用的web.xml默认编码是否是"UTF-8"以下是后端强制转码配置
<filter> <filter-name>Set Character Encoding</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>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
按照此种写法HttpServletRequest和HttpServletResponse在控制层是不可缺少的,否则有乱码
/**数据透传下发记录*/ @RequestMapping("sendTransparentinfoSendCmd") public Object sendTransparentinfoSendCmd(TransparentinfoSendlog transparentinfoSendlog,HttpServletResponse response,HttpServletRequest request){ if(transparentinfoSendlog.getVehicleId()==null){ // 未选择车辆 return setReturnMap(false, HttpCode.NO_SELECT_VEHICLE.value()); } String sim=terminalService.findMobileCodeByVehicleId(transparentinfoSendlog.getVehicleId()+""); if(sim==null||sim.equals("")){ return setReturnMap(false, HttpCode.ORDER_SEND_NO_SIM.value()); } if(transparentinfoSendlog.getEnterpriseId()==null){ // 没有公司ID return setReturnMap(false, HttpCode.BAD_REQUEST_ENTERPRISE.value()); } // 存储数据透传下发发送日志 OrderInfo orderInfo=new OrderInfo(); orderInfo.setId(com.cvnavi.util.WebUtil.getPK()); User user = WebExecutionContext.getUser(); orderInfo.setUserId(user.getId());//设置userId // 设置指令ID transparentinfoSendlog.setOrderId(orderInfo.getId()); boolean flag=iTransparentinfoService.insertTransparentinfoSendlog(transparentinfoSendlog); if(!flag){ return setReturnMap(false, HttpCode.BAD_REQUEST.value());//请求错误 } // 发送指令到网关 orderInfo=iOrderInfoService.sendTransparentinfoSendlogCmd(orderInfo,transparentinfoSendlog); if(orderInfo==null){ return setReturnMap(false, HttpCode.BAD_REQUEST.value());//请求错误 } if("0".equals(orderInfo.getStatus())){ return setReturnMap(false, HttpCode.NO_VEHICLE_ONLINE.value());//车辆不在线 }else if("-1".equals(orderInfo.getStatus())){ return setReturnMap(false, HttpCode.ORDER_SEND_FAIL.value());//指令发送失败 } return setReturnMap(true, HttpCode.OK.value()); }