<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    細(xì)心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點(diǎn)粗墨,七八筆買賣,九十道人情。

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

    JavaMail發(fā)送中文郵件亂碼的解決

        我們的程序經(jīng)常會出現(xiàn)這樣一個問題,在WinXp下測試是正常的,而到了服務(wù)器(Linux操作系統(tǒng))上就出現(xiàn)這個問題。
        1、    由于郵件我寫的程序的郵件主題是寫在配置文件(. properties)中的,再通過native2ascii把中文郵件主題從本地碼(簡體中文Wind Xp 是GBK)轉(zhuǎn)換為Unicode 編碼。而Java程序讀取properties配置文件內(nèi)容時,是根據(jù)操作的編碼方式來讀取的,這樣就造成程序的可移植性差。
        2、    沒有指定郵件主題的編碼方式
        當(dāng)一段 Text 或者 HTML 通過電子郵件傳送時,發(fā)送的內(nèi)容首先通過一種指定的字符編碼轉(zhuǎn)化成“字節(jié)串”,然后再把“字節(jié)串”通過一種指定的傳輸編碼(Content-Transfer-Encoding)進(jìn)行轉(zhuǎn)化得到另一串“字節(jié)串”。比如,打開一封電子郵件源代碼,可以看到類似的內(nèi)容:
    Content-Type: text/plain;charset="gb2312"
    Content-Transfer-Encoding: base64
    sbG+qcrQuqO17cf4yee74bGjz9W7+b3wudzA7dbQ0MQNCg0KvPKzxqO6uqO17cnnsaPW0NDEDQoNCg==
    最常用的 Content-Transfer-Encoding 有 Base64 和 Quoted-Printable 兩種。在對二進(jìn)制文件或者中文文本進(jìn)行轉(zhuǎn)化時,Base64 得到的“字節(jié)串”比 Quoted-Printable 更短。在對英文文本進(jìn)行轉(zhuǎn)化時,Quoted-Printable 得到的“字節(jié)串”比 Base64 更短。
        郵件的標(biāo)題,用了一種更簡短的格式來標(biāo)注“字符編碼”和“傳輸編碼”。比如,標(biāo)題內(nèi)容為 "中",則在郵件源代碼中表示為:
    // 正確的標(biāo)題格式
    Subject: =?GB2312?B?1tA=?=
    其中,
    第一個“=?”與“?”中間的部分指定了字符編碼,在這個例子中指定的是 GB2312。
    “?”與“?”中間的“B”代表 Base64。如果是“Q”則代表 Quoted-Printable。
    最后“?”與“?=”之間的部分,就是經(jīng)過 GB2312 轉(zhuǎn)化成字節(jié)串,再經(jīng)過Base64 轉(zhuǎn)化后的標(biāo)題內(nèi)容。
    如果“傳輸編碼”改為 Quoted-Printable,同樣,如果標(biāo)題內(nèi)容為 "中":
    // 正確的標(biāo)題格式
    Subject: =?GB2312?Q?=D6=D0?=
        如果閱讀郵件時出現(xiàn)亂碼,一般是因?yàn)?#8220;字符編碼”或“傳輸編碼”指定有誤,或者是沒有指定。比如,有的發(fā)郵件組件在發(fā)送郵件時,標(biāo)題 "中":
    // 錯誤的標(biāo)題格式
    Subject: =?ISO-8859-1?Q?=D6=D0?=
    這樣的表示,實(shí)際上是明確指明了標(biāo)題為 [0x00D6, 0x00D0],即 "ÖÐ",而不是 "中"。
        3、    解決方法
    (1):修改操作系統(tǒng)編碼方式為GBK,或在服務(wù)器上通過native2ascii把郵件主題重新生成Unicode 編碼,并更新配置文件內(nèi)容;
    (2):給郵件主題指定編碼方式:
    sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); 
    msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
        建議:帶有中文的配置文件,盡量不用*. properties文件,而用XML文件替代。

    posted on 2007-05-06 12:04 張金鵬 閱讀(690) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩在线不卡免费视频一区| 免费人成在线观看69式小视频| 暖暖日本免费在线视频| 亚洲国产精品无码久久久| 在线美女免费观看网站h| 亚洲黄色免费在线观看| 7x7x7x免费在线观看| 亚洲精品人成电影网| 国产成人无码免费看视频软件| 亚洲一区二区三区国产精品无码| 99久久久国产精品免费无卡顿| 亚洲欧洲精品久久| 成人性生交大片免费看无遮挡 | 亚洲欧洲AV无码专区| 破了亲妺妺的处免费视频国产| 亚洲国产成人久久精品大牛影视 | 中文字幕在线观看免费视频 | 亚洲高清毛片一区二区| 国产精品另类激情久久久免费| 青娱乐在线免费观看视频| 国产中文在线亚洲精品官网| 国产成人高清亚洲| 中文字幕免费在线播放| 亚洲AV色香蕉一区二区| 国产卡二卡三卡四卡免费网址 | 久久青青草原国产精品免费| 亚洲AV无码码潮喷在线观看| 51精品视频免费国产专区| 亚洲一区二区三区国产精华液| 免费大黄网站在线观看| 亚洲精品视频免费在线观看| 青青草免费在线视频| 久青草国产免费观看| 精品亚洲成a人片在线观看少妇| 最近中文字幕无吗免费高清| 免费福利在线观看| 中文字幕亚洲综合久久| 亚洲成av人片不卡无码久久| 久久久久久国产精品免费免费男同| 亚洲综合无码无在线观看| 亚洲精品高清国产一线久久|