2011-05-13 97 views
0

之間不同的使用PHP郵件功能通過電子郵件發送形式時,我有一個問題。這是我使用的代碼:PHP郵件:特殊字符顯示Firefox和IE

$name = $_POST['name']; 
$last_name = $_POST['last_name']; 
$company = $_POST['company']; 
$email = $_POST['email']; 
$country = $_POST['country']; 
$phone = $_POST['phone']; 
$message = $_POST['message']); //This comes from the form 

$formcontent="Name: $name $last_name <br> Company: $company <br> Email: $email <br> Country: $country <br> Telephone: $phone <br><br> Message: $message"; 

$mailheader = 'MIME-Version: 1.0' . "\r\n"; 
$mailheader .= 'Content-type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable' . "\r\n"; 
$mailheader .= 'From: ' . $email . "\r\n"; 

mail("[email protected]", "subject", $formcontent, $mailheader) or die("Error!"); 

這是將要發送的西班牙和特殊字符,如N,口音形式,c等...

的問題是,如果我這樣使用它,它在Firefox 3.6.3中可以正常工作,但是在Internet Explorer 8中使用表單時,發送的特殊字符會全部混亂(如ç而不是ç)。但是,如果我添加函數utf8_encode$ formcontent的變量,那麼它在IE瀏覽器,但它停止工作在Firefox中顯示類似於η而不是C的東西。

我能做些什麼,使無論是瀏覽器的工作?任何幫助將非常感激!

編輯:

我發現,如果我郵件發送之前呼應$ formcontent變量,如果我使用的是Firefox,特殊字符已經混亂的。我怎樣才能避免瀏覽器干擾正在發送的內容?請我現在完全無能爲力!我不知道該怎麼改變纔能有所作爲。即使這是一個愚蠢的版本,是否有任何其他的PHP郵件在兩個瀏覽器中使用特殊字符?

+0

你的意思是「Internet Explorer」? – 2011-05-13 16:46:31

+0

是啊,當然 – 2011-05-13 16:54:25

回答

0

基本上你需要確保你的頁面上的每個字符集是一樣的。確保頁面有utf-8字符集aswel。既然你用utf8發送它,那麼輸入必須來自utf8。

你能也許告訴我們在此郵件正在取得的頁面的代碼(或現場演示)?

+0

@PENDO:謝謝你的回覆。我有這在我的網頁的頭:** **。表單的標籤是:**

**。所以我到處看看它說UTF-8 ... – 2011-05-13 17:11:03

+0

是有可能,你的IE瀏覽器是壓倒另一個(ISO-8859爲例)字符集 – 2011-05-13 17:20:48

+0

@PENDO:嗯,事情是別人的資源管理器在做同樣的...我如何檢查這是怎麼回事?無論如何,你在我的代碼中看到什麼奇怪的東西嗎?你會這樣做嗎? – 2011-05-13 17:26:27