跳到主要內容

Email主旨亂碼

Email主旨亂碼 =?Big5?(Q|B)?xxxxxxxxxx ?=

原文網址: http://www.javaworld.com.tw/jute/post/view?bid=7&id=4670&sty=3

一、前言:
   您還記不記得,在多年以前,在Microsoft Internet Explorer尚未流行之前,大家收發信件所使用的工具,不是Netscape就是Eudora;那時大家在寫中文信時,並沒有發生什麼困難。直到 Internet Explorer出現之後,大家發現,收回來的信件中,總是在主旨欄內看不到正常的中文字,而是看到以=Big5為開頭的一些亂碼,後來慢慢地發現所收的 信件中,主旨欄以=Big5為開頭亂碼愈來愈多,逼得到最後,心不甘情不願地將自己原來習慣使用的郵件工具改換為Outlook Express。

二、說明:
  到底為什麼大家非得使用Outlook Express作為收發郵件工具不可呢?得簡單,它預設的信件傳送格式是獨有的,Microsoft老大哥絕對不會遵循大家既有且通用的格式,如此才能慢慢地將大家同化,而改用它的產品,而目前這個目標就快達成了!
  原來Microsoft運用了小技巧,讓我來詳細說明吧!

  在原本Internet世界中,所有的Server幾乎都是Unix的天下,若瞭解Internet的發展史,應該說是在Unix環境下,才產生Internet的。

   信件在遠端收送時,必須透過一個大家共同遵循的協定,如此大家才能順利地將信件正確的收發。信件在達端收送,可分為兩部分,一是送信,一是收信;送信協 定為SMTP(Simple Mail Transhfer Protocol),收信協定則是POP(Post Office Protocol)。

   一般在歐美國家的環境中,所有文字只用到7Bit,所以在整個傳送的協定,都只有7Bit來傳送;但Internet發展到其他各地時,因各地文字之關 係,文字有的使用到第8Bit,因此在送信協定(SMTP)中又增加了擴充的功能叫ESMTP(Extented Simple Mail Transfer Protocol),其增加了額外的命令及編碼的功能,讓8Bit的資料能以7Bit編碼的方式來傳送信件。

  在 擴充的送信協定(ESMTP)中,提供了MIME(Multiparpose Internet Mail Extersion)的編碼方式,但只是針對信件內容(body)而言;對信件的header(含To:,From:,Message ID:,Subject:,Status:...等)部份,若有用到8Bit文字時,則採用UUencode編碼。

  再來我們介紹一下MIME格式: =?國家碼代號?編碼方式?內容.....?=
國家碼代號=>英文:US-900A,中文(Big5內碼):big5
編碼方式===>Q:Quoted-Printable,B:Base-64
以中文字為例,您看到的MIME編碼後為=?big5?B?...........?=這行文字看起來有沒有很熟悉呢?

  接下來我們看一下由Outlook Express所寄出來的Header部份: Message-ID: <004401bf0562$db9b86c0$18e412a3@manager>
From: =?big5?B?vbKrVKhr?=
To: =?big5?B?sWmnu6n6?=
References: <000201bf0514$ec8e5960$0c0aa8c0@jang-home>
Subject: =?big5?B?UmU6IKZVpuyl66bxLKdAt36o06RGLi4u?=
Date: Thu, 23 Sep 1999 09:27:53 +0800
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0041_01BF05A5.E99D3500"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.00.2314.1300
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
Status: RO

不論是From:,To:,Subject:,看到的均為=?big5?B?......?=,這是什麼意義呢?原來Outlook Express將整個Header部份,全部以MIME格式編碼。

問題就在這邊,以ESMTP協定來看,Header部份是UUencode,body部份才是MIME,Microsoft這會兒都用MIME編碼!所以大家看到的主旨才會是=?big?B?.......?=,而不是中文字!

   想當初大家都用 Eudora 或 Netscape 收信,都沒什麼問題,主旨使用中文完全沒有問題,遇到中文就用Uuencode,中文完全沒問題;可是Outlook Express一出現,軟微老大他在」主旨」方面的編碼,也給你用Mime格式編碼,大家原本使用的Eudora或Netscape收信,主旨從此就看不 到正確的中文字,只看到=Big5.....?=這些亂碼了,被迫得大家非得使用Outlook 或 Outlook Express看信不可。


三、設定方法:
   將 Outlook 信件處理中,信件傳送格式不論是純文字或HTML(預設是HTML格式),MIME格式必須將編碼關掉(不選Quoted Printable或Base 64,要選"無"),且須設定"表頭容許8位元字元";或是乾脆許取選取Uuencode方式;如此便能正常地顯示中文字!
  現在請大家廣為推行,每次設定Outlook時,信件傳送格式若用Mime格式,就不要編碼且須設定"表頭容許8位元字元",或大家乾脆使用Uuencode編碼,讓非Microsoft的信件處理程式,也能順利地看到中文字,不再受軟微老大的壓榨!

留言

這個網誌中的熱門文章

install virtualbox on centos 5.5

先到VirtualBox官网下载Linux下的VirtualBox 4.0, http://www.virtualbox.org/wiki/Linux_Downloads 由于是在CentOS5.5(32bit)中安装,所以下载跟Red Hat Enterprise Linux 5相对对应的版本,这里下载的是VirtualBox-4.0-4.0.0_69151_rhel5-1.i386.rpm。 以root账号登录到CentOS系统。 VirtualBox需要kernel modules的支持,所以系统要先安装kernel。 #yum install kernel-devel #yum install gcc 运行上面两个命令,其中第一个命令安装了kernel-devel,第二个命令安装了kernel-headers、glibc-headers、glibc-devel和gcc,并更新了glibc-common。 通过U盘,将VirtualBox-4.0-4.0.0_69151_rhel5-1.i386.rpm拷到root的home目录下。打开终端,进入到home目录,执行安装VBox的命令: #rpm –ivh VirtualBox-4.0-4.0.0_69151_rhel5-1.i386.rpm 安装过程,除了DSA signature警告外,还有VBox内核模块安装失败的报错: Trying to register the VirtualBox kernel modules using DKMS[FAILED] (Failed, trying without DKMS) Recompiling VirtualBox kernel modules [FAILED] (look at /var/log/vbox-install.log to find out what went wrong) VBox安装过程中系统自动创建了一个“vboxusers”用户组,需把用户加入到该组才能使用VBox。把当前的root用户加入到vboxusers中,命令如下: #usermod –G vboxusers –a root 此时,建立、并且启动VirtualBox kernel module: #/etc/init.d/vboxdrv setup 也出现同样报错...

Yamaha PSR-400 Power