java JSP中文本编码与解码

u7up0aaq  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(163)
<%@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”或hello,那么它应该打印hello,或者如果输入“hello”,那么它也应该打印hello......特殊的章程不应该显示,请帮助我,我无法做到这一点......

brccelvz

brccelvz1#

我觉得你需要这个:

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

对我来说,它工作得很好:

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

输出量:
你好你好

lyfkaqu1

lyfkaqu12#

您使用的不是完整的Unicode,而是Latin-1、ISO-8859-1。此Latin-1将被浏览器解释为MS Windows Latin-1或“Cp-1252”/“Windows-1252”。此字符集包含一些特殊字符,如逗号(如引号)、€(欧元)等。
URL编码/解码是自动完成的。输入的数据输入可能会导致数字HTML实体到达服务器,例如&#1234;,当它具有像Latin-1这样的受限字符集时。对于整个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样式。

相关问题