电子邮件格式的字符编码问题

时间:2009-11-04 22:59:13

标签: email forms jsp character-encoding

我有一个简单的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 &gt; &gt;</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.

2 个答案:

答案 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的电子邮件标头。

如果没有看到电子邮件和生成它们的代码,就很难说出问题所在。