php и utf-8 SOS

У меня проблема с настройкой utf-8 в php с помощью этой контактной формы:

    <?php header('Content-type: text/plain; charset=utf-8');

require 'PHPMailer-master/PHPMailerAutoload.php';

$fromEmail = '[email protected]';
$fromName = 'test form';

$sendToEmail = '[email protected]';
$sendToName = 'TEST';

$subject = 'New message from contact form';
$fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'message' => 'Message');

$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!';
$errorMessage = 'There was an error while submitting the form. Please try again later';

error_reporting(E_ALL & ~E_NOTICE);

try
{

    if(count($_POST) == 0) throw new \Exception('Form is empty');

    $emailTextHtml = "<h1>You have a new message from your contact form</h1><hr>";
    $emailTextHtml .= "<table>";

    foreach ($_POST as $key => $value) {
        if (isset($fields[$key])) {
            $emailTextHtml .= "<tr><th>$fields[$key]</th><td>$value</td></tr>";
        }
    }
    $emailTextHtml .= "</table><hr>";
    $emailTextHtml .= "<p>Have a nice day,<br>Best,<br>Ondrej</p>";

    $mail = new PHPMailer;

    $mail->setFrom($fromEmail, $fromName);
    $mail->addAddress($sendToEmail, $sendToName);
    $mail->addReplyTo($from);

    $mail->isHTML(true);

    $mail->Subject = $subject;
    $mail->msgHTML($emailTextHtml);


    if(!$mail->send()) {
        throw new \Exception('I could not send the email.' . $mail->ErrorInfo);
    }

    $responseArray = array('type' => 'success', 'message' => $okMessage);
}
catch (\Exception $e)
{
    $responseArray = array('type' => 'danger', 'message' => $e->getMessage());
}


if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $encoded = json_encode($responseArray);

    header('Content-Type: application/json');

    echo $encoded;
}
else {
    echo $responseArray['message'];
}

Когда я отправляю сообщение, я получаю следующее: 'СР° Ð½Ð´Ñ € инР°'. Я читаю все форумы и результаты Google, но не понимаю. Я пробовал добавить «header ('Content-type: text / plain; charset = utf-8');» почти везде, но это не помогло.

Пожалуйста помоги :)


person ss777    schedule 15.12.2017    source источник
comment
прочитайте stackoverflow.com/questions / 279170 /   -  person Jeff    schedule 15.12.2017
comment
Здесь 2 возможных проблемы: вы отправляете что-то (а именно некоторые пробелы) до <?, как это выглядит здесь (хотя может быть проблема с копированием и вставкой). Возможно, сам файл php не закодирован в utf-8   -  person Jeff    schedule 15.12.2017
comment
Вам необходимо уточнить, получаете ли вы искаженный текст в HTML-ответе, генерируемом вашей страницей, или в отправляемом вами электронном письме, или в том и другом. Это две отдельные проблемы с разными решениями.   -  person Sammitch    schedule 15.12.2017
comment
Это в электронном письме.   -  person ss777    schedule 16.12.2017
comment
Тогда установка HTTP-заголовка не решит проблему, вам нужно настроить PHPMailer для установки кодировки UTF8 в сообщении. $mail->CharSet = 'UTF-8'; stackoverflow.com/questions/2491475/   -  person Sammitch    schedule 16.12.2017
comment
Это сработало. Большое спасибо. :)   -  person ss777    schedule 16.12.2017