当前位置: 首页 > 知识库问答 >
问题:

jsp表单中的Java UTF-8编码

步嘉德
2023-03-14

我尝试做一个java web应用程序。在本地Tomcat7服务器上一切都很好。我有一个jsp文件;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
request.setCharacterEncoding("UTF-8");

共有1个答案

颛孙正谊
2023-03-14

再次检查以下设置,确保每个人都知道这是UTF-8派对。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="format-detection" content="telephone=no" />
</head>
<body>
your html content goes here....
</body>
</html>

数据库表使用utf-8字符集,我不信任数据库默认值,这就是为什么创建表定义有它。

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_swedish_ci;

CREATE TABLE tMyTable (
  id int(11) NOT NULL auto_increment,
  code VARCHAR(20) NOT NULL,
  name VARCHAR(20) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_swedish_ci;

让JDBC连接知道utf-8字符集。

<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource"
  maxActive="10" maxIdle="2" maxWait="10000"
  username="myuid" password="mypwd"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf8"
  validationQuery="SELECT 1"
/>
<Connector port="8080"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           debug="0" connectionTimeout="20000"
           disableUploadTimeout="true" useBodyEncodingForURI="true"
/>
if (req.getCharacterEncoding() == null)
      req.setCharacterEncoding("UTF-8");
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ 
   page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"
   import="java.util.*, 
             java.io.*"
%><%
   request.setCharacterEncoding("UTF-8");
   String myvalue = "hello all and ÅÄÖ";
   String param = request.getParameter("fieldName");
   myvalue += " " + param;
%><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Page Title</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta name="format-detection" content="telephone=no" />
</head>
<body>
your html content goes here.... <%= myvalue %>
</body>

最后一件事是如何将字符串写入响应流,如果将字符串转换为字节,请确保它使用的是utf-8,并让客户机知道这一点。

response.setContentType("text/html; charset=UTF-8");
response.getOutputStream().write( myData.getBytes("UTF-8") );

这是一个很长的帖子,但它几乎涵盖了大多数角落的问题。

 类似资料:
  • 我的web应用程序存在编码问题。在Begging会议上,我认为问题在于数据库编码,但后来我排除了Servlet的bug。如下所示:JSP页面包含一个表单,用户在其中传递一个具有波兰字符的单词,例如“Poniedziałek”,然后我对接收此参数并将其传递给变量的servlet进行除错。变量中的结果为“PoniedziaÅek”。 我的JSP文件中的编码设置为UTF-8 我还尝试使用servlet设

  • 该项目使用JSP、Servlets、Jquery、Tomcat6。 JSPs中的Charset设置为UTF-8,所有Tomcat连接器都使用uriencoding=UTF-8,我还使用了一个字符编码过滤器,如下所述。另外,我在meta标记中设置了contentType,我的浏览器会正确地检测到它。 在使用Jquery的Ajax调用中,我使用encodeURIComponent()作为URL参数,然

  • 有人能提出一些解决办法吗?

  • 请查看Servlet类中的注释。如果将更改为,则无法访问应用程序。 为什么会出现这个问题?

  • 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理。浏览器中使用 GET 和 POST 方法向服务器提交数据。 GET 方法 GET方法将请求的编码信息添加在网址后面,网址与编码信息通过"?"号分隔。如下所示: http://www.runoob.com/hello?key1=value1&key2=value2 GET方法是浏览器默认传递参数的方法,一些敏感信息,如密码等建议不使用

  • 另一种可能是首先调用servlet,然后将JSP文件作为视图调用。但这是一个简洁的特性,在servlet中执行这一功能需要通过调用request.getParameter()手动实例化对象,这也意味着大量重复WRT。因此必须首先使用JSP。我可以使用一个JSP,然后转发到servlet,然后转发到“view”JSP,但对于JSP的一个“特性”来说,这似乎有点乏味。所以尽管付出了很多努力,我仍然在寻