Java 在android中读取json响应时如何修复编码?

Java 在android中读取json响应时如何修复编码?,java,android,encoding,character-encoding,Java,Android,Encoding,Character Encoding,我正在调用一个API,它返回一个JSON响应。在读取JSON响应时,有些地方的数据具有一些特殊字符。我想在读取对象中的响应时排除这些特殊字符。JSON响应如下所示: {"data":[{"title":"PSY - GANGNAM STYLE (\uac15\ub0a8\uc2a4\ud0c0\uc77c) M\/V","content":All rights reserved."}]} Java代码如下所示: BufferedReader reader = new BufferedRead

我正在调用一个API,它返回一个
JSON
响应。在读取
JSON
响应时,有些地方的数据具有一些特殊字符。我想在读取对象中的响应时排除这些特殊字符。
JSON
响应如下所示:

{"data":[{"title":"PSY - GANGNAM STYLE (\uac15\ub0a8\uc2a4\ud0c0\uc77c) M\/V","content":All rights reserved."}]} 
Java代码如下所示:

BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "ISO-8859-1"), 8);
当我从响应中读取标题键时,它也给了我这些我不想要的特殊字符。你如何摆脱这些?我需要指定其他编码吗


数据源:

这不是编码问题(如UTF-8),而是JavaScript语法问题。例如,“
\uac15
”是表示Unicode字符U+AC15的JavaScript语法,即강". 这些转义字符加在一起就是这首用韩语写的歌的名字:강남스타일“

Java字符串包含反斜杠转义序列是正常的,当您通过JSON读取器运行该字符串时,应该会得到一个包含实际韩文字符的JSON对象


作为对您关于从JSON阅读器获得错误输出的评论的回应,这取决于您使用的JSON库(以及您如何使用它),您在问题中没有指定。下面是一个使用2.1.0的示例:


(\uac15\ub0a8\uc2a4\ud0c0\uc77c)M\/V---Theses它们不是特别的,只是Unicode。你想删除它们还是正确编码?如果你想删除它们,你收到的字符串总是相同的格式吗?我需要正确编码,因为字符串并不总是相同的。我甚至尝试过UTF-8,但运气不好。我想你不需要删除Unicode字符,因为它是我的be重要的data.JSON应该是UTF-8,所以我猜服务器返回了错误的响应。请显示响应头。它给我的是“PSY-GANGNAM风格(ëëëêêêêêê¼)M/V”,而不是“PSY-GANGNAM风格”(강남스타일)“当我运行JSON阅读器并将其转换为JSON对象时。请尝试我添加的示例代码。我怀疑您可能实际上从JSON阅读器中获得了正确的字符串,但随后在输出代码中遇到了某种编码错误。
public final class JsonTest {
    public static void main(final String[] args) {
        final String json = "\"PSY - GANGNAM STYLE (\\uac15\\ub0a8\\uc2a4\\ud0c0\\uc77c) M\\/V\"";
        System.out.println("JSON: " + json);

        try {
            // ObjectMapper is from Jackson 2.1 databind library.
            final ObjectMapper mapper = new ObjectMapper();
            final String decoded = mapper.readValue(json, String.class);
            System.out.println("Decoded: " + decoded);
        }
        catch (final IOException e) {
            e.printStackTrace();
        }
    }
}