将HttpServletRequest转换为JSON格式,编码为"UTF-8"。

3

我有一个方法,可以将HttpServletRequest转换为JSON格式:

public JsonObject requestToJson(HttpServletRequest request){

        StringBuffer jb = new StringBuffer();
        String line = null;
        try {
            BufferedReader reader = request.getReader();
            while ((line = reader.readLine()) != null)
                jb.append(line);
        } catch (Exception e) { /*report an error*/ }

        return new JsonParser().parse(jb.toString()).getAsJsonObject();
    }

问题是如何将请求转换为“UTF-8”编码?
更新:我检查了一下,读取器默认将请求视为“ISO-8859-1”。如何设置参数使读取器将其视为“UTF-8”。
2个回答

1
我发现解决办法了。我只是在顶部添加了以下内容:

request.setCharacterEncoding("UTF-8");

0
尝试使用request.setCharacterEncoding("UTF-8"),但这种方法在GET参数上并不起作用。
另一种方式是手动转换为UTF-8:
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
    jb.append(new String(line.getBytes(), "UTF-8"));

这不是GET参数。此外,你的示例代码是危险的。line.getBytes()将使用平台默认编码,这基本上是一个随机值,取决于你在哪台机器上运行它。 - Christoffer Hammarström
我检查了一下,默认情况下,读取器将请求视为"ISO-8859-1"。如何设置参数给读取器,使其将请求视为"UTF-8"? - annoirq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接