2014-05-17 169 views
0

我有一個簡單的網頁,我從$ _POST獲取用戶輸入的數據:評論,用戶名等。我將它們發送到電子郵件並將它們保存在數據庫中。我的問題是,當我發送電子郵件時,無論客戶是什麼,我只看到胡言亂語。我嘗試在所有iso 88xx,utf8,windows等電子郵件中聲明元標記,但沒有成功。還嘗試了一百萬個htmlentities()的例子,所有這些都導致了同樣的事情......簡單的亂碼。 (儘管有時候源代碼顯示了不同的東西,但純文本從不改變)。PHP轉換html特殊字符,如口音顯示正確

示例代碼:

if (isset($_POST['name'])) { 
    $name = htmlentities($_POST['name'], ENT_QUOTES); 
} 

郵件的結果()$的域名(堂吉訶德)會是這樣的 「唐Quijóte」。

對不起,如果這是一個轉發,但我不能得到這個工作。

回答

1

你試過設置標頭,像...

// Always set content-type when sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:plain/text;charset=UTF-8" . "\r\n"; 

mail($to,$subject,$message,$headers); 

這會將編碼設置爲UTF-8。更多這裏: http://www.w3schools.com/php/func_mail_mail.asp

+0

你剛剛救了我的命。 anks! – user3529213

+0

不是問題,很高興提供幫助。 – Sarcoma

1

令人驚訝的是很難以正確的方式發送郵件。你得到的與唐吉訶德的錯誤是由於你的字符串是在utf8中,但它是用ISO8859編碼顯示的。 (這就是爲什麼你會得到怪異A和小3

我會建議使用PHP郵件You can get it here

這是簡單的方式設置,這將是,如果你更有效地在一些在未來的時間需要(因爲郵件()打開和關閉每個通話的連接)

另外請注意,如果您使用的是utf-8,那麼應該使用utf-8。應該設置您的數據庫到utf-8。你輸出到html等等。你應該確定它的每一步都是utf8。

+0

我要保留關於PHP Mailer的註釋,看起來像它會派上用場。 – user3529213