0

libcurl クライアントから Tomcat サーブレットに二重引用符が埋め込まれたデータを投稿しています。サーブレットはデータを読み取り、クライアントに送り返します。

私が送るものはこんな感じです

{
   "id": 1,
   "name": "Foo",
}

しかし、サーブレットから受け取るものは次のようになります

{
   \"id\": 1,
   \"name\": \"Foo\"
}

つまり、すべての二重引用符がエスケープされます。

サーブレットが引用符をエスケープしないようにするにはどうすればよいですか? 私のサーブレットは doPost メソッド内でこのようなことをしています

public void doPost(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
{
    BufferedReader reader = request.getReader();
    StringBuilder content = new StringBuilder();
    char[] buffer = new char[4 * 1024];
    int len = 0;
    while (len >= 0) { 
        len = reader.read(buffer, 0, buffer.length); 
        if (len > 0) { 
            content.append(buffer, 0, len);
        }
    }

    PrintWriter out = response.getWriter(); 
    out.print(content.toString())
}

編集
これで問題が解決します。

URLEncoder.encode(content.toString(),"UTF-8")
4

1 に答える 1

1

書き込む前に文字列をエンコードします。

于 2012-05-11T18:45:52.793 に答える