我有一个简单的jsp表单,客户用它向我们发送电子邮件。虽然在某些情况下,电子邮件的格式错误,但在电子邮件的整个文本中偶尔会显示文本=?ISO-8859-1?Q?
。
我知道ISO-8859-1是一个字符编码,虽然我不确定这个错误是如何发生的,并且无法重现此错误。我试图填写使用Firefox选择的不同字符编码的表单,但仍然无法重现。我曾尝试使用具有中文Win XP语言设置的笔记本电脑来填写表单,但也无法重现此错误。
有没有人看过这个错误或有任何想法我怎么能重现这个?
感谢您的评论 - 我仍在寻找一种方法来重现此错误或其原因,
jsp代码很简单(下面)在weblogic 9中的portlet中使用
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-adapter-html.tld" prefix="html"%>
<%@ page import="java.lang.String" %>
<html:html>
<html:head>
<title>Feedback Form</title>
</html:head>
<html:body>
<html:form action="/emailFeedback">
<label>First name </label>
<html:text property="forename"/>
<label>Surname </label>
<html:text property="surname"/>
<label>telephone number </label>
<html:text property="telephonenumber"/>
<label>Zip code</label>
<html:text property="zipcode"/>
<label>DOB (MM/DD/YYYY)</label>
<html:text property="dob" />
<label>Email </label>
<html:text property="email"/>
<label>Confirm Email </label>
<html:text property="confirm_email"/>
<label>Subject</label>
<html:selectproperty="category">
<html:option value="">select > ></html:option>
<html:option value="Test1">Test1</html:option>
<html:option value="Test2">Test2 Payments</html:option>
<html:option value="Test3">Test3</html:option>
</html:select>
<html:textarea property="feedback" cols="40" rows="7" />
<input value="Submit your query" type="submit">
</html:form>
</html:body>
</html:html>
电子邮件错误的电子邮件格式如下(已清除个人数据!)
=?ISO-8859-1?Q?=0A=0A______firstname:=09=09tes?= =?ISO-8859-1?Q?t=0A______lastname:=09=09KRA=0A___?= =?ISO-8859-1?Q?___Email:=09=09sampleemail@yaho?= =?ISO-8859-1?Q?o.fr=0A______DOB:=09=09=09=0A______?= =?ISO-8859-1?Q?telephonenumber:=05=09454465465456=0A?= =?ISO-8859-1?Q?______zipcode:=09=09=0A______T?= =?ISO-8859-1?Q?hree_No:=09=0907533644972=0A______Feedback:_____=0A______h?= =?ISO-8859-1?Q?sample_test_with_underscores_linking_words?= =?ISO-8859-1?Q?9_14.97=sample_test_with_underscores_linking_words?=
以下是具有正确格式的示例电子邮件:
firstnameame: John
last ame: Doe
email: john.doe@test.com
DOB: 01/02/1957
Telephone : 005465465465
ZIPCODE: 91210
Feedback:
Correctly formatted feedback.
答案 0 :(得分:1)
ISO-8859-1
编码仅涵盖标准拉丁字符,而不是中文。要涵盖中文以及世界上任何其他角色,请更好地使用UTF-8
。
另请参阅this article以获取更多技术背景信息以及如何相应地配置JSP / Servlet环境以使用UTF-8
的若干解决方案。
希望这有帮助。
答案 1 :(得分:1)
=?ISO-8859-1?Q?text?=
是MIME encoded-word语法,表示文本(在最后两个?之间)是在ISO-8859-1中编码引用的,在通常只允许使用ASCII的上下文中是可打印的。
此语法通常用于仅允许为ASCII的电子邮件标头。
如果没有看到电子邮件和生成它们的代码,就很难说出问题所在。