问题描述
- android客户端解析json,出现乱码 ( 没有中文 ) ,请大神指点
-
本人使用Tomcat apache-tomcat-8.0.28虚拟服务器,默认utf-8编码update.json
{"versionName":"2.0","versionCode":2,"description":"Hello word!!","downloadUrl":"http://www.baidu.com"}
android studio 1.3.1 做了个客户端:部分编码如下:
private void checkVersion(){
new Thread(){
@Override
public void run() {try { URL url = new URL("http://10.0.2.2:8080/update.json"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.connect(); int responseCode = conn.getResponseCode(); if(responseCode==200){ InputStream inputStream = conn.getInputStream(); String result = StreamUtils.readFromSteam(inputStream); Log.e("System.Out.Print", "result:"+result); //解析Json JSONObject jo = new JSONObject(result); mVersionName = jo.getString("versionName"); mVersionCode = jo.getInt("versionCode"); mDescription = jo.getString("description"); mDownloadUrl = jo.getString("downloadUrl"); Log.e("System.Out.Print", "run "+mVersionName+";"+mVersionCode); Log.e("System.Out.Print", "run "+mDescription+";"+mDownloadUrl); } } catch (MalformedURLException e) { // utl错误的异常 e.printStackTrace(); } catch (IOException e) { //网络错误的异常 e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } }.start(); }
public class StreamUtils {
/** * readFromSteam() 将输入流读成String后返回 * @return */ public static String readFromSteam(InputStream in) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while((len=in.read())!=-1){ out.write(buffer,0,len); } String result = out.toString(); in.close(); out.close(); return result; } } 每次运行后的结果如下: ![图片说明](http://img.ask.csdn.net/upload/201602/21/1456069188_115538.jpg) 请大神指点
解决方案
在用HttpURLConnection的时候,没有设置默认编码,可能是utf-8和 "ISO-8859-1"混淆了。
然后模拟器和手机不一样的原因是;Android版本不一样导致HttpURLConnection的具体实现不一样,记得Android4.4之后,HttpURLConnection底层采用HttpOK了。
解决方案四:
在模拟器中访问Json是正确的
解决方案五:
错误的截屏:
解决方案六:
编码错误,看怎么改下编码
解决方案七:
编码错误,看怎么改下编码
解决方案八:
看着就是编码问题了。。。
解决方案九:
编码的问题,,统一 一下编码
解决方案十:
不只是是不是AndroidStudio的问题。我也是遇到。不是网上说的设置AndroidStudio字体能解决的
时间: 2024-12-03 16:58:40