通知メールで文字化け

 

邮件乱码问题

 

 

通知メールで文字化け

通知邮件乱码

-》通知邮件中出现了乱码问题(20090511追加)。

 

通知(つうち): 通知

メール( mail ): 邮件

文字化け(もじばけ): 乱码

 

问题描述:

<!-- [if !supportLists]-->「①」   <!-- [endif]-->が「 ? 」に文字化けしている。

页面上的 ,在邮件中出现了乱码,变成了问号?

 

 

我的调查过程:

1.Debug, ,发现,取得的邮件内容中,①②之类的文字是能正确显示的。

            // メールの内容

            String content = mailTransformer.transform(mailData, stylesheetUrlForSuccess);

 

2. 因为此处的邮件发送是先将邮件信息(包括邮件 subject 、内容等)存储在数据库表,然后再搜表发信的。想到去数据库表中确认,发现此时存储的记录(邮件 内容)没有乱码。

 

3. 再次 debug ,发现,将邮件内容从数据库中拿出来之后,最后真正执行邮件发送时(下述代码所示), sender 中的邮件内容还没有乱码,正常显示。

        // 送信する

        jp.co.×××.×××.mail.MailSender sender = new JavaMailSender(mail);

        try {

            sender.send();

        。。。。。。 
 

 

问题的 焦点集中到了 件在网 传输过 程中采取何 种编码

1. 调查 Intra-Mart API ,关于 StandardMail (说明了配置文件的位置和设置相关)。

jp.co.intra_mart.foundation.mail.javamail
クラス StandardMail

<!--   [if gte vml 1]><v:shapetype
   id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
   path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
   <v:stroke joinstyle="miter"/>
   <v:formulas>
    <v:f eqn="if lineDrawn pixelLineWidth 0"/>
    <v:f eqn="sum @0 1 0"/>
    <v:f eqn="sum 0 0 @1"/>
    <v:f eqn="prod @2 1 2"/>
    <v:f eqn="prod @3 21600 pixelWidth"/>
    <v:f eqn="prod @3 21600 pixelHeight"/>
    <v:f eqn="sum @0 0 1"/>
    <v:f eqn="prod @6 1 2"/>
    <v:f eqn="prod @7 21600 pixelWidth"/>
    <v:f eqn="sum @8 21600 0"/>
    <v:f eqn="prod @7 21600 pixelHeight"/>
    <v:f eqn="sum @10 21600 0"/>
   </v:formulas>
   <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
   <o:lock v:ext="edit" aspectratio="t"/>
  </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="拡張" style="width:11.25pt;
   height:10.5pt" mce_style="width:11.25pt;
   height:10.5pt">
   <v:imagedata src="file:///C:\DOCUME~1\JUKEY~1.WIC\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" mce_src="file:///C:\DOCUME~1\JUKEY~1.WIC\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"
    o:href="http://www.intra-mart.jp/apilist/v50/doclet/foundation/resources/inherit.gif"/>
  </v:shape><![endif]--><!--   [if !vml]-->拡張
<!--   [endif]-->jp.co.intra_mart.foundation.mail.javamail.StandardMail

 

public class StandardMail

extends Object

送信するメールの属性を保管します。
このオブジェクトが保持するメールのキャラクターセット、エンコディングの設定は ロケールに依存します。

ロケール毎の設定は定義ファイルをにより決定されます。
ServerManager 上に /conf/mail/encode.properties として、定義ファイルを配置してください。
指定可能なキーの一覧

charset

キャラクターセット

mimeEncoding

MIME エンコード (B or Q)

contentTransferEncoding

ボディのエンコード

導入されたバージョン :

5.0

関連項目 :

JavaMailSender

 

-》服务器上的/conf/mail目录下的encode.properties文件,请在这个定义文件中进行(字符编码)设置。(20090511追加)

 

 

2. 在网上找到这样一篇文章《 如何 理日文系 中的 NEC 拡張字 》:

从这上面得到这样的信息: ② ③ NEC拡張 字,在 Shift_JIS 中不支持(无法显示),在 Windows-31J 支持显示。

 

3. 找到 C:\imartDebug\conf\mail 文件 ,有 encode_ja_JP.properties encode_ja.properties 文件

-》这是本地mail发送字符编码的设定文件夹(20090511追加)

 

尝试在这两个 mail 配置文件上打字符集设置的主意。

 

1. 经测试(每次修改后都要重新启动服务器,有点小麻烦),跟 encode_ja.properties 文件 没什么关系,转向专攻 encode_ja_JP.properties 文件 。原先该文件中的设置如下: charset=iso-2022-jp

先后尝试过 Shift_JIS Windows-31J ,都不行,要么是全部乱码,要么是 乱码问题也没有解决。

 

2. 根据 API 中的描述,也尝试了将 mimeEncoding B 修改成 Q ,还是没有效果。

 

最终问题解决:将 charset 改成 UTF-8 ,重启服务器,测试发信,收信,乱码没有了, OK ,问题解决!

UTF Unicode Transformation Format),果然名不虚传!

 

 -》当邮件在网络中进行传输时,字符编码采用统一字符编码格式 UTF-8,能解决收到的邮件中可能出现乱码的问题。(20090511追加)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值