Json分析器错误 - 无效的UTF-8启动字节0xa0

时间:2016-05-30 03:48:11

标签: android json encoding utf-8

我在将Json数据发送到服务器时遇到了问题。我想在UTF-8格式的开头没有预料到的坏字符存在一些问题。

我使用CharDecoder替换所有格式错误的utf-8字符,这是代码。

 // Construct the Decoder
    CharsetDecoder utf8Decoder = Charset.forName("UTF-8").newDecoder();
    utf8Decoder.onMalformedInput(CodingErrorAction.REPLACE);
    utf8Decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
    //  Configure to replace Malformed input with space
    utf8Decoder.replaceWith(" ");

    //  Construct ByteBuffer
    ByteBuffer byteBuff = ByteBuffer.wrap(text.getBytes());
    try {
        //  Process the text.
        CharBuffer parsed = utf8Decoder.decode(byteBuff);
        return new String(parsed.array());
    } catch (CharacterCodingException e) {
        e.printStackTrace();
    }

这对我没有帮助。当我查看解析器抱怨的Json post数据的列行时,它是一个空格字符。

Json发帖是

{"body":{"messageSegments":[{"type":"Text","text":"This is a link "},{"type":"Mention","id":"005GGGGGG02g6MMIAZ"},{"type":"Text","text":" ish"}]},"capabilities":{"questionAndAnswers":{"questionTitle":"https:\/\/www.google.co.nz\/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-16"}}}

错误是

[{"errorCode":"JSON_PARSER_ERROR","message":"Invalid UTF-8 start byte 0xa0 at [line:1, column:139]"}]

请任何线索。

谢谢,
SREE

2 个答案:

答案 0 :(得分:0)

将字符for(var i = 1; i <= 3; i++) { window['executed' + ( i > 1 ? i : '' )] = false; } // now you can access 'executed', 'executed2', 'executed3' globally 转换为其他字符并进行测试。

有用的链接http://www.ietf.org/rfc/rfc4627.txt

答案 1 :(得分:0)

0xa0是Unicode字符&#39; NO-BREAK SPACE&#39; (U + 00A0)

不是通常的空格0x20

在视觉上很难注意到差异,但有些框架不喜欢它。