как получить данные utf-8 из строки запроса в JSP - PullRequest
0 голосов
/ 25 февраля 2012

Я хочу получить данные utf-8 из строки запроса на странице jsp, поэтому я написал следующую простую страницу JSP

Но я получаю garbaage вместо данных utf-8.

Я хочу знать, как получить данные utf-8 из строки запроса в JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Random.*"%>
<%
request.setCharacterEncoding("UTF-8");
String strFirstName=request.getParameter("firstname");
String strLastName=request.getParameter("lastname");
String strEmail=request.getParameter("email");
String strPassword=request.getParameter("password1");

out.println("<br/>First Name => "+strFirstName);
out.println("<br/>Last Name => "+strLastName);
out.println("<br/>Email => "+strEmail);
out.println("<br/>Password => "+strPassword);


Connection conn;
conn=null;
int rs;
int Flag=0;

String Query=null;
PreparedStatement stat = null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:xe","system","mypassword"); 

Random randomGenerator = new Random();
int ID = randomGenerator.nextInt();


String sql =" INSERT INTO CONTACTS (id,firstname,lastname,email,password1) VALUES (?,?,?,?,?) ";

stat = conn.prepareStatement(sql);

stat.setInt(1,ID);
stat.setString(2,strFirstName);
stat.setString(3,strLastName);
stat.setString(4,strEmail);     
stat.setString(5,strPassword);

rs=stat.executeUpdate();

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>New Contact</title>
<META http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
<link href="Site.css" rel="stylesheet" type="text/css" />
</head>
<body>

<form id="frmForm" name="frmForm" method="get" action="form.jsp">

<table width="500" align="left" border="0">
  <tr>
    <td colspan="2" align="center" class="accountInfo"><div align="left"><h2>New Contact Information</h2> </div></td>
  </tr>
  <tr>
    <td colspan="2" align="center" class="accountInfo">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2" align="center" class="accountInfo">&nbsp;</td>
  </tr>

  <tr>
    <td colspan="2" align="center" class="accountInfo">&nbsp;</td>
  </tr>
  <tr>
    <td width="200" align="center"><div align="left"><strong>First Name  </strong><span class="style3">* </span></div></td>
    <td width="300" align="left"><label>
      <input type="text" width="300px" name="firstname" id="firstname" />
    </label></td>
  </tr>
  <tr>
    <td width="200" align="center"><div align="left"><strong>Last Name</strong><span class="style3"> *</span> </div></td>
    <td width="300" align="left"><input width="300px" type="text" name="lastname"  id="lastname"/></td>
  </tr>
  <tr>
    <td width="200" align="center"><div align="left"><strong>Email</strong></div></td>
    <td width="300" align="left"><input width="300px" type="text" name="email"  id="email"/></td>
  </tr>
    <tr>
    <td width="200" align="center"><div align="left"><strong>Password</strong></div></td>
    <td width="300" align="left"><input width="300px" type="password" name="password1"  id="password1"/></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="left"><label>
      <input type="submit" name="Submit" value="Submit" />
    </label></td>
  </tr>
</table>

</form>


</body>
</html>

1 Ответ

1 голос
/ 25 февраля 2012

Вы, вероятно, получаете данные в кодировке ISO-8859-1, потому что method вашей формы имеет значение get, а ваш WAS (возможно, Tomcat?) Декодирует URI как таковой (это значение по умолчанию).

Если вы используете Tomcat, измените элемент server.xml Connector для вашего HTTP-порта, включив в него атрибут URIEncoding="UTF-8".

Если ваша форма должна изменить состояниесервер (например, регистрация контакта в БД), вы можете просто изменить метод на post, который по умолчанию кодирует запрашивающую страницу (то есть utf-8).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...