在表单中提交EUR符号并获得额外的2个字符

时间:2017-11-25 10:21:58

标签: java

当我从JSP页面中的Form向Servlet提交EUR(€)符号时,我会得到额外的2个随机字符。 (我的IDE是IntelliJ)。为什么提交其他两个角色并且我有什么遗漏?

我在JSP页面中有一个Form,如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Euro Form</title>
</head>
<body>
<form action="/servlet" method="post">
    <input type="text" name="txtInput1" value="">
    <button type="submit">Submit</button>
</form>
</body>
</html>

由以下Servlet处理:

package servlets;

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 java.io.IOException;

@WebServlet(name = "Servlet", urlPatterns = {"/servlet"})
public class Servlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.getRequestDispatcher("/WEB-INF/jsp/form.jsp").include(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String txtInput1 = request.getParameter("txtInput1");

        char[] chars = txtInput1.toCharArray();
        // ...

        request.setAttribute("txtInput1", txtInput1);
        request.getRequestDispatcher("/WEB-INF/jsp/form.jsp").include(request, response);
    }

}

当我从该表单向Servlet提交EUR(€)符号时,我会收到一组随机字符,实际上如下所示,但是当我将其打印回HTML页面时,它显示为一个€符号......:

enter image description here

1 个答案:

答案 0 :(得分:0)

它与unicode字符集有关,事实上在utf-8(这是你正在使用的字符集)中,欧元符号由三元组编码226 130 172