@responsebody 乱码问题

早上改了个东西,发现返回的json数据出现乱码问题,原因是:

spring mvc使用的默认处理字符串编码为ISO-8859-1,具体参考org.springframework.http.converter.StringHttpMessageConverter

类中public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");

百度的解决办法如下:

解决方法:

第一种:对于需要返回的字符串的方法加注解。如:

	@SuppressWarnings("unchecked")
	@ResponseBody
	@RequestMapping(value="brand",produces = "application/json; charset=utf-8")
	public Object brandList(HttpServletRequest request) {
		Map<String,Object> map = new HashMap<String,Object>();
		PageData pd=new PageData();
		try {
			//JSONObject json=this.getRequestInfo(request);
			String nub=request.getParameter("number").toString();
			if(null==nub || nub.equals("")){
				map.put("message", "请检查参数");
				return AppUtil.returnJson(pd, map);
			}else{
				String callback = request.getParameter("callback");
				if(StringUtils.isNotBlank(callback)){
					pd.put("callback", callback);
				}
			}
			Integer number = Integer.parseInt(nub);
			map = brandService.getBrandList(number);
		} catch (Exception e) {
			e.printStackTrace();
			map.put("message", "服务器错误");
		}
		return AppUtil.returnJson(pd, map);
	}

我使用了这种方法,此方法只针对单个方法调用起作用。

第二种方法:在application配置文件中加入如下:

<mvc:annotation-driven>
     <mvc:message-converters register-defaults="true">
    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
      <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
    </bean>
   </mvc:message-converters>
     </mvc:annotation-driven>

我测试了一下,没用,当然有兴趣的可以去详细测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值