【问题标题】:Character encoding problem with email format电子邮件格式的字符编码问题
【发布时间】:2010-12-13 05:35:10
【问题描述】:

我有一个简单的 jsp 表单,客户使用它来向我们发送电子邮件。尽管在某些情况下,电子邮件的格式不正确,文本=?ISO-8859-1?Q? 偶尔会显示在整个电子邮件文本中。

我知道 ISO-8859-1 是一种字符编码,但我不确定此错误是如何发生的并且无法重现此错误。我尝试使用 Firefox 选择不同的字符编码来填写表格,但仍然无法重现。我曾尝试使用带有中文 Win XP 语言设置的笔记本电脑填写表格,但也无法重现此错误。

有没有人看到这个错误或知道如何重现这个?

感谢您的 cmets - 我仍在寻找重现此错误的方法或寻找其发生的原因,

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.

【问题讨论】:

    标签: email forms jsp character-encoding


    【解决方案1】:

    ISO-8859-1 编码仅涵盖标准拉丁字符,不包括中文。要涵盖中文以及世界上可用的任何其他字符,最好使用UTF-8

    另请参阅this article 了解更多技术背景信息以及如何配置您的 JSP/Servlet 环境以使用UTF-8 的几种解决方案。

    希望这会有所帮助。

    【讨论】:

    • 感谢 BalusC。优秀的帖子完美地描述了我的问题!我尝试在表单中输入字符串 Český,但我收到了同样格式错误的电子邮件。您的博客所说的解决方案可以在 JSP 或网络服务器级别实现以强制执行 UTF-8 编码。 :)
    • 不客气。不要忘记将问题标记为已回答:)
    • 如果可以的话,我也会投票给它,我会在获得此个人资料的代表后投票:)
    【解决方案2】:

    =?ISO-8859-1?Q?text?=MIME encoded-word 语法,表示文本(在最后两个 ?s 之间)以 ISO-8859-1 编码,可在通常只允许使用 ASCII 的上下文中打印。

    此语法通常用于仅允许为 ASCII 的电子邮件标头。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-03
      • 2012-06-03
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2012-10-18
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多