2012-10-22 59 views
2

我使用AJAX的聯繫表,從下載:http://youhack.me/2010/07/22/create-a-fancy-contact-form-with-css-3-and-jquery/阿賈克斯聯繫表和UTF-8

一切工作正常,除了UTF作爲提交時,我無法使用cyrilic符號。

的PHP:

$name = $_POST['name']; // contain name of person 
$email = $_POST['email']; // Email address of sender 
$web = $_POST['web']; // Your website URL 
$body = $_POST['text']; // Your message 
$receiver = "[email protected]" ; // hardcorde your email address here - This is the email address that all your feedbacks will be sent to 

if (!empty($name) & !empty($email) && !empty($body)) { 
    $body = "Name: {$name}\n\nSubject: {$web}\n\nMessage: {$body}"; 
    $send = mail($receiver, 'Contact from domain.com', $body, "From: {$email}"); 
    if ($send) { 
     echo 'true'; //if everything is ok,always return true , else ajax submission won't work 
    } 
} 

它採用jquery.validationEngine恩進行驗證。 我的html已經在標題中有「Content-Type」content =「text/html; charset = utf-8」。

我是新來的PHP和jQuery,所以我會appriciate一些指導,使UTF-8工作時提交。 謝謝:)

編輯:當我嘗試在必填字段使用cyrilic字符(čšćđ)我得到阿賈克斯輸入錯誤「請只使用字母」。如果我在非必填字段提交cyrilic字符的表單,我會收到併發送電子郵件,除cyrilic外,所有字母均可顯示,如下所示:Å¡

編輯2:當我設置收件人的Gmail(網絡郵件),cyrilic字符顯示正常,除了在一個領域,在阿賈克斯犯規讓我使用他們(正則表達式從雷因德答案)。

當我在Outlook(本地)設置收件人並提交表單,沒有cyrilic字符的顯示不出來好的,例如:ALA OAA LA所有AA

解決感謝雷因德爲指導和大衛!今天:)

+0

你的意思,當你說UTF8不工作? 當你輸出它時,它會在你的PHP代碼中顯示correclty嗎? 電子郵件顯示不正確? –

+0

當我嘗試提交特殊字符(čšćđ)我得到ajax驗證錯誤:「僅使用字母」。 – g5wx

+0

請用你剛纔給出的評論更新你的問題; –

回答

2

說完看着你正在使用的插件會解決這個問題,我認爲這與jquery.validationEngine-en.js內部驗證的正則表達式做

當驗證設置爲「onlyLetter 「它會檢查使用

/^[a-zA-Z\ \']+$/ 
你的角色的čšćđ在這裏允許

,沒有......你需要爲你所使用的語言的語言驗證JavaScript和改變正則表達式

。例如,看看this post

接下來要檢查你的PHP文件和你的頭文件的編碼。 將這個在你的PHP代碼

header("Content-type: text/html; charset=utf-8"); 

檢查前如果當只是在PHP中輸出他們,像這樣的值正確顯示:

echo $name; 

如果它們正確地顯示在瀏覽器和它只是真實正確顯示字符的電子郵件,那麼你需要的編碼頭傳遞給郵件太

例如:

$headers = "From: $name <$email>\n"; 
$headers .= "Content-Type: text/plain; charset=UTF-8\n"; 
$body = "Name: {$name}\n\nSubject: {$web}\n\nMessage: {$body}"; 
$send = mail($receiver, 'Contact from domain.com', $body, $headers); 

看看PHP上的mail function。NET網站

+0

良好的呼叫!這解釋了ajax錯誤消息。我認爲改變這個正則表達式+用utf-8發送郵件(使用我的答案中的函數,或者類似的函數)可能會有訣竅。 –

+0

是的,這很有道理,謝謝Reinder&David! 你可能知道我應該替換那個正則表達式嗎?再次,我有點在javascript的noob,我可能只是搞砸了:) – g5wx

+0

阿賈克斯正在工作 - 我已經擴展了正則表達式: [a-zA-ZŠČĐĆŽščđćž'] + $ 我可以提交現在使用chars的形式,這是cyrilic。那樣好嗎? – g5wx