sobadstan 2024-04-23 21:11 采纳率: 28.6%
浏览 8

使用servlet使用alter输出中文弹窗是出现乱码


package servlets.task5_2;

import ch5.UserInfo;
import ch5.UserBase;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        HttpSession Session=request.getSession();
        ServletContext application = request.getServletContext();
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        response.setCharacterEncoding("UTF-8");
        String referer = request.getHeader("referer");
        if(referer==null ||!referer.endsWith("task5_2input.jsp")){
            response.sendRedirect("task5_2input.jsp");
            return;
        }
        String userid=request.getParameter("userid");
        String password1 =request.getParameter("password1");
        String password2=request.getParameter("password2");
        String username = request.getParameter("username");
        String sex = request.getParameter("sex"); userid = userid.trim();
        if(userid.equals("")){
            out.write("");
            out.write("<script>alert('账号不允许为空!');history.back(-1);</script>");
            return;
        }
        password1 = password1.trim();
        password2 = password2.trim();
        if(password1.equals("")){
            out.write("<script>alert('密码不允许为空!');history,back(-1);</script>");
            return;
        }
        if(!password1.equals(password2)){
            out.write("<script>alert('两次输人的密码不一致!');history.back(-1);</script>");
            return;
        }
        username = username.trim();
        if(username.equals("")){
            out.write("<script>alert('用户名不允许为空!');history,back(-1);</script>");
            return;
        }
        if(sex==null){
            out.write("<script>alert('请选择性别!');history.back(-1);</script>"); return;}
        UserInfo newUser = new UserInfo(); newUser.setUserid(userid);
        newUser.setPassword(password1); newUser.setSex(sex);
        newUser.setUserName(username);
        if(application.getAttribute("userBase")==null){
            UserBase userBase = new UserBase();
            application.setAttribute("userBase",userBase);
        }
        UserBase userBase =(UserBase)(application.getAttribute("userBase"));
        String feedback = userBase.addUser(newUser);
        if(!feedback.equals("OK")){
            out.write("<script>alert('"+feedback+"');history.back(-1);</script>");
            return;
        }
        Session.setAttribute("curUser", newUser);
        response.sendRedirect("task5_2success.jsp");
    }

}

我已经使用

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        response.setCharacterEncoding("UTF-8");

设置了编码格式
可是页面的弹窗还是有乱码

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-23 21:11
    关注

    引自免费微信小程序:皆我百晓生

    在您的代码中,您已经设置了请求和响应的字符编码为 UTF-8,但仍然存在乱码问题。这可能是由于 JSP 页面或其他相关资源(如 CSS、JavaScript 文件)没有正确设置编码导致的。为了解决这个问题,请尝试以下几个步骤:

    1. 确保 JSP 页面头部的 meta 标签指定了正确的字符集: 在您的 JSP 页面(例如 task5_2input.jsptask5_2success.jsp)的 <head> 部分添加以下行:

      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      
    2. 检查并确保任何外部引用的 JavaScript 或 CSS 文件也具有正确的字符集声明。这些文件可能包含用于弹窗的文本。

    3. 如果您使用了其他服务器端技术(例如 JSTL),确保它们也支持 UTF-8 编码。对于 JSTL,您可以在 JSP 文件顶部引入标签库时指定 encoding 属性:

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" encoding="UTF-8"%>
      
    4. 为了确保所有地方都使用 UTF-8 编码,您可以考虑在 web.xml 文件中的 <filter> 标签中使用 Character Encoding Filter,这样可以统一处理整个应用的字符编码问题。以下是配置示例:

      <!-- Add this filter to your web.xml file -->
      <filter>
          <filter-name>CharacterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
              <param-name>forceEncoding</param-name>
              <param-value>true</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>CharacterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      

    完成上述更改后,重启您的应用程序服务器,并再次测试您的注册功能。这应该解决乱码问题。如果您还有乱码问题,请检查您的开发环境(IDE)是否将源代码保存为 UTF-8 编码。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月23日