Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php utf-8字符集不适用于PEAR Mail_mime的联系人表单_Php_Utf 8_Character Encoding_Pear_Contact Form - Fatal编程技术网

Php utf-8字符集不适用于PEAR Mail_mime的联系人表单

Php utf-8字符集不适用于PEAR Mail_mime的联系人表单,php,utf-8,character-encoding,pear,contact-form,Php,Utf 8,Character Encoding,Pear,Contact Form,我已经找到并尝试了在其他关于特殊字符utf编码和其他相关问题的问题中给出的各种解决方案,但都没有成功 我有一个html联系人表单,通过使用PEAR mail mime的简单php脚本将信息发送到我的邮件地址。我可以从本地主机上的测试站点发送包含特殊字符的信息,没有问题,但在我上传到服务器之后就不行了 例如消息: 测试特殊字符:èèèèèê 从服务器发送后成为: 测试特殊字符:éèçÃô´ 我猜这是我的web服务器的一个编码问题,但我还是有点纠结于如何解决这个问题 包含表单的文件中的元标记

我已经找到并尝试了在其他关于特殊字符utf编码和其他相关问题的问题中给出的各种解决方案,但都没有成功

我有一个html联系人表单,通过使用PEAR mail mime的简单php脚本将信息发送到我的邮件地址。我可以从本地主机上的测试站点发送包含特殊字符的信息,没有问题,但在我上传到服务器之后就不行了

例如消息: 测试特殊字符:èèèèèê

从服务器发送后成为: 测试特殊字符:éèçÃô´

我猜这是我的web服务器的一个编码问题,但我还是有点纠结于如何解决这个问题

包含表单的文件中的元标记设置为:

<meta charset="utf-8"> 
以及为“Content Type”=“text/html”的消息创建$headers;字符集=UTF-8

我的脚本中的相关php代码:

//This section creates the email headers
$headerss=array(); 
$headerss['From']= $from_address; 
$headerss['To']= $siteEmail; 
$headerss['Subject']= $email_subject; 
$headerss['Return-Path']= $contactEmail; 
$headerss['Date']= date("r"); 
$headerss['Content-Type'] = 'text/html; charset="UTF-8"';  

// This section creates the smtp inputs
$auth = array('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password);

// create new Mail_mime instance, set utf-8 charset
$mail = new Mail_mime();
$mail -> setHTMLBody($email_message); 


//CHECK THIS OUT FOR UTF-8 ***************************** 

$mimeparams=array(); 
$mimeparams['text_encoding']="7bit"; 
$mimeparams['text_charset']="UTF-8"; 
$mimeparams['html_charset']="UTF-8";
$mimeparams['head_charset']="UTF-8"; 
$mimeparams['eol']= "\n" ; 

$body = $mail->get($mimeparams); 
$headers = $mail->headers($headerss); 


// This section send the email
$smtp = Mail::factory('smtp', $auth);
$sendmail = $smtp->send($siteEmail, $headers, $body);
任何帮助都将不胜感激。谢谢。

试着在

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我遇到了同样的问题,我的解决方案是以相同的格式保存php文件,即UTF-8格式,就像我以ANSI格式保存的一样。这解决了我的问题。

您能验证$email\u消息的编码是否为UTF-8吗?@Doge$email\u消息是通过HTTP POST请求生成的,该请求来自设置为UTF-8的“接受字符集”的联系人表单的输入。然后将输入添加一些格式以创建电子邮件:例如,$email_message.=From:.$contactName。;谢谢你的建议,但没有解决问题。
//This section creates the email headers
$headerss=array(); 
$headerss['From']= $from_address; 
$headerss['To']= $siteEmail; 
$headerss['Subject']= $email_subject; 
$headerss['Return-Path']= $contactEmail; 
$headerss['Date']= date("r"); 
$headerss['Content-Type'] = 'text/html; charset="UTF-8"';  

// This section creates the smtp inputs
$auth = array('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password);

// create new Mail_mime instance, set utf-8 charset
$mail = new Mail_mime();
$mail -> setHTMLBody($email_message); 


//CHECK THIS OUT FOR UTF-8 ***************************** 

$mimeparams=array(); 
$mimeparams['text_encoding']="7bit"; 
$mimeparams['text_charset']="UTF-8"; 
$mimeparams['html_charset']="UTF-8";
$mimeparams['head_charset']="UTF-8"; 
$mimeparams['eol']= "\n" ; 

$body = $mail->get($mimeparams); 
$headers = $mail->headers($headerss); 


// This section send the email
$smtp = Mail::factory('smtp', $auth);
$sendmail = $smtp->send($siteEmail, $headers, $body);
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />