输入中文姓名,控制台乱码
解析:POST请求通过流的方式读取数据,即getReader(),tomcat默认获取流的编码并非utf-8,所有出现乱码。因此只需要在获取数据前设置编码即可。 (仅用作POST请求解决方式,GET请求不可用)
POST请求中文乱码解决方案: req.setCharacterEncoding("UTF-8");//在读取数据前加上这句即可转换读取流的编码 String username=req.getParameter("username"); String fullname=req.getParameter("fullname"); String password=req.getParameter("password");
设置后读取中文正常
tomcat使用url编码,GET请求乱码需先对乱码数据进行编码转为字节数组,后再对字节数组解码。
GET请求中文乱码解决方案: //进行编码 byte[]bytes=username.getBytes(StandardCharsets.ISO_8859_1); //进行解码,所得username可正常中文输出 username=new String(bytes,StandardCharsets.UTF_8);