m0_54597340 2022-03-23 17:04 采纳率: 0%
浏览 43

使用tomcat9时,get和post方法传中文,req.getparameter获取在控制台输出为NCR编码

问题遇到的现象和发生背景

学习servlet时,在HTML表单提交了中文参数并输出到控制台,结果是NCR编码格式

问题相关代码,请勿粘贴截图

Hello World!

<input name="username" type="text" /> <input type="submit" />

@WebServlet(urlPatterns = {"/demo1","/demo2"})
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    req.setCharacterEncoding("UTF-8");
    String username=req.getParameter("username");
    System.out.println(StringEscapeUtils.unescapeHtml(username));
    }

    @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doGet(req,resp);
}

}

运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • Tomshidi 2022-03-23 17:26
    关注

    切换commons-lang3依赖包的版本为3.4

    <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.4</version>
    </dependency>
    

    方法改为StringEscapeUtils.unescapeHtml4("的")

    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日