0

HTTPJSON 請願で受け取っています。Internet Explorer 8解析から来ると、例外で失敗します:

InPart inPart = mp.next();

MyClass myClass = inPart.getBody(MyClass.class, null);

com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 12))    at [row,col {unknown-source}]: [1,101]]

関連するコード:

InPart inPart = mp.next();

String s = inPart.getBody(String.class, null);

providers.getMessageBodyReader(MyClass.class, null, null,
            MediaType.APPLICATION_JSON_TYPE).readFrom(MyClass.class, null, null,
            MediaType.APPLICATION_JSON_TYPE, headers.getRequestHeaders(),
                new ByteArrayInputStream(s.getBytes())); // Tried with s.getBytes("UTF-8")

com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 12)) at [row,col {unknown-source}]: [1,101]

さらに私が行う場合:

String ss = s.replaceAll("\\p{Cntrl}", "");

ss.equals(s); // 

true を出力します

長さは同じです。

私も試しました:

private String removeControlChar(String in) {
    StringBuilder sb = new StringBuilder();
    for (char c : in.toCharArray())
    {
        if(!Character.isISOControl(c)) {
            sb.append(c);
        }
        else
        {
            // To delete
            int i = 0;
        }
    }
    return sb.toString();
}

InPart inPart = mp.next();

String s = inPart.getBody(String.class, null);
Strign ss = removeControlChar(s);
providers.getMessageBodyReader(MyClass.class, null, null,
            MediaType.APPLICATION_JSON_TYPE).readFrom(MyClass.class, null, null,
            MediaType.APPLICATION_JSON_TYPE, headers.getRequestHeaders(),
                new ByteArrayInputStream(ss.getBytes())); // Tried with s.getBytes("UTF-8")

デバッグすると、失敗する文字\fは例外に記載されているとおりです。しかし、エラーは無効な XML 文字であると言っています。これが問題ではないでしょうか?

何か案は?これは Internet Explorer にのみ影響するようです。

ありがとうございました。

4

1 に答える 1

0

誰かが同じトラブルに陥った場合に備えて、この質問は削除しません。

C:\fakepath\問題は、ブラウザーが実行時にその ようなパスを送信し、 XML に変換した後に\f.

この動作はブラウザで設定できます。

よろしく。

于 2011-06-21T12:01:05.367 に答える