【问题标题】:Convert HttpServletRequest to JSON as "UTF-8"将 HttpServletRequest 转换为 JSON 为“UTF-8”
【发布时间】:2015-12-28 03:50:23
【问题描述】:

我有方法,将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”。

【问题讨论】:

    标签: java json spring utf-8


    【解决方案1】:

    我自己找到了解决方案。我刚刚添加到顶部:

    request.setCharacterEncoding("UTF-8");
    

    【讨论】:

      【解决方案2】:

      尝试use 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() 将使用平台默认编码,它基本上是一个随机值,具体取决于您在哪台机器上运行它。
      • 我检查了,默认情况下,阅读器将请求视为“ISO-8859-1”。如何为阅读器设置参数,将其设为“UTF-8”
      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 2015-04-29
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      相关资源
      最近更新 更多