Servlet MySQL中文处理问题

3 篇文章 0 订阅

中文编码问题一直都比较麻烦,这次我写Servlet 的时候再次遇到了这个问题


MySQL编码格式为UTF8,刚开始的时候Servlet 并没有做相应的接收处理,所以一直出现编码问题。查询之后发现,当 setCharacterEncoding为null时,浏览器则采用ISO-8859-1的方式来进行重新的编码。所以在Servlet 接收的时候需要指定编码格式。

下面是我的代码,接收URI请求,查询数据库,并且通过Json返回数据,返回的编码是UTF8的。

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
	// TODO Auto-generated method stub
	String name = new String(req.getParameter("name").getBytes("ISO-8859-1"),"GBK");
	JPlaceInfo placeInfo = DaoActivity.getPlaceInfo(name);
	
	JSONStringer stringer = new JSONStringer();
	
	try {
		stringer.array().object();
		
		stringer.key("name").value(placeInfo.getName()).
			key("tag").value(placeInfo.getTag()).
			key("time").value(placeInfo.getTime()).
			key("address").value(placeInfo.getAddress()).
			key("image").value(placeInfo.getImage());
		
		stringer.endObject().endArray();
	} catch (JSONException e) {
		e.printStackTrace();
	} catch (Exception e) {
		e.printStackTrace();
	}
	resp.getOutputStream().write(stringer.toString().getBytes("UTF-8"));
	resp.setContentType("text/json; charset=UTF-8");
	
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值