在json解析之后我有符号而不是字母

时间:2014-08-20 14:31:32

标签: java json parsing utf-8 encode

英文文本和数字正确显示在结果字符串中,但我希望显示的其他字母不正确。而不是它们有一系列符号,如& - # - 1080; ... 我试图在我的InputStreamReader上设置UTF-8,但它没有效果。感谢任何帮助。 这是代码:

public class HttpClient {
private static String BASE_URL = "here url";
public String getData(String number) {
    HttpURLConnection con = null ;
    InputStream is = null;
    try {
        con = (HttpURLConnection) ( new URL(BASE_URL + number)).openConnection();
        con.setRequestMethod("GET");
        con.setDoInput(true);
        con.setDoOutput(true);
        con.connect();
        // Let's read the response
        StringBuffer buffer = new StringBuffer();
        is = con.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
        String line = null;
        while (  (line = br.readLine()) != null )
            buffer.append(line + "\r\n");

        is.close();
        con.disconnect();
        return buffer.toString();
    }
    catch(Throwable t) {
        t.printStackTrace();
    }
    finally {
        try { is.close(); } catch(Throwable t) {}
            try { con.disconnect(); } catch(Throwable t) {}
        }
        return null;
    }
}

------------
JSONObject jb = new JSONObject(data);
JSONArray jr = jb.getJSONArray("items");
JSONObject c = jr.getJSONObject(0);
String id = c.getString(TAG_ID);
String images = c.getString(TAG_IMAGES);
String title = new String(c.getString(TAG_TITLE).getBytes("ISO-8859-1"), "UTF-     8");//tried this - didn't help
String text = c.getString(TAG_TEXT);`

2 个答案:

答案 0 :(得分:0)

你确定答案是UTF-8吗?

尝试在浏览器中点击URL并查看HTTP响应标头,我猜它不是UTF-8。

有很多图书馆可以帮助处理网络服务请求。其中一个较低级别的库是http-client。我建议你使用这个(或更高级别的抽象),而不是直接使用HttpURLConnection。

答案 1 :(得分:-1)

如果从php web服务创建json,请使用此代码

echo utf8_encode(json_encode($result));