如何在Jsp中编码和解码文本

问题描述 投票:0回答:2
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
 <%@page import="java.net.URLDecoder"%>
  <%@page import="java.net.URLEncoder"%>
<html>
<form action="index.jsp">
    <body>
        First INPUT:
        <input name="firstinput" type="text" name="fname">
        <br>
        <input type="submit" value="Submit">

        <%
            String first = request.getParameter("firstinput");
              String Searchtext=URLDecoder.decode(first,"UTF-8");
            out.println(Searchtext);

            out.println(URLEncoder.encode(Searchtext,"UTF-8"));
        %>

 </body>
 </form>
</html>

这是我的代码,我想在 Jsp 中对文本进行编码和解码 实际上,我希望当输入文本“”、''、/ /...任何特殊宪章时,它应该打印与输入“hello”或类似的文本相同的文本你好,那么它应该打印你好,或者如果输入“你好”,那么它也应该打印你好...特殊宪章不应该显示,请帮助我,我无法做到这一点...

java jsp
2个回答
0
投票

我想你需要这个:

String lWithoutSpecials = first.replaceAll("[^\\p{Alpha}]+","");

对我来说效果很好:

String s = "\\Hello\\ \"Hello\" 'Hello'";
String lWithoutSpecials = s.replaceAll("[^\\p{Alpha}]+", "");
System.out.println(lWithoutSpecials);

输出:

你好你好你好


0
投票

您没有使用完整的 Unicode,而是使用 Latin-1、ISO-8859-1。这个 Latin-1 将浏览器 解释为 MS Windows Latin-1 或“Cp-1252”/“Windows-1252”。该字符集有一些特殊字符,例如逗号(如引号)、€(欧元)等。

URL编码/解码是自动完成的。输入的数据条目可以 导致数字 HTML 实体到达服务器,例如当具有诸如 Latin-1 之类的受限字符集时的

&#1234;
。对于整个 Unicode 字符使用 UTF-8,您需要添加到
<form accept-charset="UTF8">
以防止被数字实体替换。

HTML 5 表单:

<%@page language="java" contentType="text/html; charset=Windows-1252"
     pageEncoding="Windows-1252"
     import="java.net.URLDecoder"
     import="java.net.URLEncoder"
%><!DOCTYPE html>
<html>
  <head>
    <title>First Input</title>
    <meta charset="ISO-8859-1">
  </head>
  <body>
    <form action="index.jsp">
        First INPUT:
        <input name="firstinput" type="text"
               value="${param.firstinput}">
        <br>
        <input type="submit" value="Submit">

        <%
            String first = request.getParameter("firstinput");
            String searchtext = first;
            out.println(searchtext);
        %>
   </form>
 </body>
</html>

谎称其字符集是有限的 ISO-8859-1,但 java 提供了更大的字符集 Windows-1252。

标签

<form>
必须位于
<body>
内。如果您对表单边距等这样做,请使用 CSS 样式。

© www.soinside.com 2019 - 2024. All rights reserved.