博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在BAE平台上getWriter(),getOutputStream()返回JSON中文乱码问题
阅读量:5080 次
发布时间:2019-06-12

本文共 1969 字,大约阅读时间需要 6 分钟。

最近打算写一个简单的javaweb程序放到BAE3.0上来响应android的请求,多线程读取网络上的json数据然后解析出有用的数据在合并成新的json对象。

结果服务器返回json对象时发现其中的中文变成了乱码了都是????。

设置response.setContentType("text/json;charset=UTF-8");或者

response.setContentType("text/json");response.setCharacterEncoding("UTF-8");

都还是输出的中文显示乱码。经过调试发现是读取网络上的json时就是乱码了。

把代码js = new String(baos.toByteArray());修改成js = baos.toString("UTF-8");读取的json就能正常显示中文了。

// 根据传进来的网址读取JSONpublic String getJsonString(String path) {	String js = "";	ByteArrayOutputStream baos = new ByteArrayOutputStream();	// 建立一个byte数组作为缓冲区,等下把读取到的数据储存在这个数组	try {		byte[] buffer = new byte[1024];		int len = 0;		URL url = new URL(path);		HttpURLConnection huc = (HttpURLConnection) url.openConnection();		huc.setRequestMethod("GET");		huc.setReadTimeout(6000);		huc.setConnectTimeout(3500);		InputStream ips = huc.getInputStream();		while ((len = ips.read(buffer)) != -1) {			baos.write(buffer, 0, len);		}		js = baos.toString("UTF-8");		baos.close();	} catch (ProtocolException e) {		e.printStackTrace();	} catch (MalformedURLException e) {		e.printStackTrace();	} catch (IOException e) {		e.printStackTrace();	}	return js;}

结果返回数据的时候发现用response.getWriter().write(getJsonString(match_id));返回的数据里中文还是显示乱码.

但是修改成response.getWriter().print(getJsonString(match_id));以后就正常显示中文了。

查了下发现print方法会自动的把字符转换成字节,用的编码是平台的默认编码。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		request.setCharacterEncoding("UTF-8");		response.setContentType("text/json");		response.setCharacterEncoding("UTF-8");		String number = request.getParameter("number");		if (match_id != null && !match_id.isEmpty()) {			//response.getWriter().write(getJsonString(match_id));			response.getWriter().print(getJsonString(match_id));	        }}

如果是选择字节流输出则用:response.getOutputStream().write(getJsonString(match_id));

或者response.getOutputStream().print(getJsonString(match_id).getBytes("UTF-8"));都能正常显示中文。

转载于:https://www.cnblogs.com/zhengxt/p/3492920.html

你可能感兴趣的文章
yii 1.x 添加 rules 验证url数组
查看>>
html+css 布局篇
查看>>
SQL优化
查看>>
用C语言操纵Mysql
查看>>
轻松学MVC4.0–6 MVC的执行流程
查看>>
redis集群如何清理前缀相同的key
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
获取元素
查看>>
proxy写监听方法,实现响应式
查看>>
第一阶段冲刺06
查看>>
十个免费的 Web 压力测试工具
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
mysql重置密码
查看>>
jQuery轮 播的封装
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
python numpy sum函数用法
查看>>
php变量什么情况下加大括号{}
查看>>
linux程序设计---序
查看>>