Json解析重音字符

时间:2016-01-20 12:48:54

标签: java json

我面临的问题是,当我解析带有重音的角色时,我的程序会为该角色随机乱码。有没有什么方法可以解析这些字符,以便它解析出来并强调字符呢?

解析Céline Dion => Céline Dion

String fullURLPath = "https://itunes.apple.com/search?term=" + songInfoQuery.replace(" ", "+");

        System.out.println("!" + fullURLPath.toString());

        URL url = new URL(fullURLPath);
        HttpURLConnection request = (HttpURLConnection) url.openConnection();
        request.connect();

        JsonParser jp = new JsonParser();
        JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
        JsonObject rootobj = root.getAsJsonObject();
        JsonArray arr = rootobj.getAsJsonArray("results");
        try {
            rootobj = arr.get(0).getAsJsonObject();
        } catch (IndexOutOfBoundsException e) {
            System.out.println("not in itunes");
        }

1 个答案:

答案 0 :(得分:1)

问题是您正在使用JVM的默认字符集解析发送给您的数据,这与用于编码响应的字符集不同。

查看在浏览器中获取该URL的响应标头,响应将以UTF-8发送。

您应该在创建InputStreamReader时明确指定字符集:

new InputStreamReader((InputStream) request.getContent(), StandardCharsets.UTF_8)

您可以在启动JVM时将UTF-8指定为默认字符集,但很容易忘记这样做 - 最好在代码中明确指出。