> Java > Java베이스 > 본문

Java의 잘못된 코드 문제에 대한 몇 가지 솔루션

풀어 주다: 2019-12-21 15:53:48
원래의
2701명이 탐색했습니다.

Java의 잘못된 코드 문제에 대한 몇 가지 솔루션

Java 왜곡 상황에 대한 여러 가지 해결 방법:

1. 서블릿에서 get을 통해 서버에 전달된 데이터를 가져올 때 왜곡된 문자가 나타납니다.

 public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String name = req.getParameter("userName");
        byte[] bytes = name.getBytes("ISO8859-1");
        String newName = new String(bytes,"UTF-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}
로그인 후 복사

분석: 캡슐화된 데이터를 가져오기 위해 doGet 메서드에 이름 변수를 정의합니다. 서버 클라이언트 데이터 userName에서 "ISO8859-1" 형식의 바이트 배열에 이름을 할당하고 마지막으로 이 바이트 배열을 UTF-8 형식의 새로 생성된 문자열 변수 newName에 할당합니다. newName은 정상적으로 작동할 수 있습니다. 표시된 데이터가 이렇게 번거로운 이유는 한 줄의 코드로 해결할 수 있는 직접적인 방법이 없기 때문입니다. 이 방법은 그냥 고정된 사용법으로 간주하면 됩니다.

2. 서블릿에서 post를 통해 서버에 전달된 데이터를 얻을 때 잘못된 문자가 나타납니다.

public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //注意:post方式提交数据的乱码解决方式,放在getParameXXX方法之前
        req.setCharacterEncoding("UTF-8");
        //得到前台input框中name="username"和password="password"的value值
        String username = req.getParameter("username");
        String password = req.getParameter("password");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}
로그인 후 복사

분석: post 전달 모드에서 잘못된 문제를 해결하는 것은 매우 간단합니다. req.setCharacterEncoding("UTF-8) "); 이 코드 줄은 데이터를 얻기 전에 이 문장을 배치해야 한다는 점에 유의하세요.

3. 서블릿이 서버를 통해 클라이언트에 데이터를 응답할 때 왜곡된 문자가 나타납니다.

public class RegistServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //方式一:
        resp.setContentType("text/html;charset=utf-8");
        //方式二:
        resp.setHeader("Content-type", "text/html");
        resp.setCharacterEncoding("UTF-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
}
로그인 후 복사

분석: 위의 두 가지 방법은 적용 시 출력 방법 전에 작성해야 합니다. , 두 가지 방법이 동일한 효과를 갖기 때문입니다. 간단하고 일반적인 방법 1입니다.

4. HTML 또는 JSP 페이지가 클라이언트에 표시될 때 잘못된 문자가 나타납니다.

<head>
        <meta charset="UTF-8">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <title>form表单</title>
</head>
로그인 후 복사

더 많은 Java 지식을 알고 싶다면 java 기본 튜토리얼 칼럼을 주목해주세요.

위 내용은 Java의 잘못된 코드 문제에 대한 몇 가지 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿