Как убрать иероглифы (Форма обратной связи)

T
На сайте с 28.02.2011
Offline
31
13784

Не могу разобраться с кодировкой. В программировании не шарю, прошу ответить куда и что нужно вписать.

Прошу не писать, что это основы основ и читай книги!

Есть форма обратной связи:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Обратная связь</title>
</head>
<?php
$url = "http://sayt.html"; //Ваша страница, где вы будете ставить форму обратной связи.
$title = "http://sayt.ru"; //адрес вашего сайта
$subject = "Оформлена заявка на сайте $title"; //Тема отпровляемых вам сообщений
$admail = "sayt@mail.ru"; //Ваш e-mail, на который будут отправляться письма

$back = "<p><a href=\"javascript: history.back()\">Вернуться на страницу</a></p>";

if(@$_POST['email'] or @$_POST['msg'])
{
@$email = $_POST['email'] or die("E-mail введён с ошибкой!$back");
@$msg = $_POST['msg'] or die("Пожалуйста, введите сообшение!$back");

if(!eregi("^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$", $email))
{
echo "Убедитесь, что вы ввели корректный E-mail!$back";
exit;
}

$content = "\nПользователь $nick!\n
Адресс: $email\n
Телефон: $telefon\n
Отправил(а) вам письмо с сайта - \"$title\"\n
Тема - $delivery, со следующим содержанием:\n\n$msg";
if(!@mail($admail, $subject, $content))
{
echo "Ошибка при отправке письма. Пожалуйста, сообщите об этом администратору данного сайта,<Br> позвонив по телефону: 11-111-11.$back";
exit;
}
else
{
echo "Спасибо, Ваше сообщение отправлено!<Br> $back ";
}
}
else {
die("Пожалуйста, введите E-mail!$back");
}
?>
<body>
</body>
</html>

Страница HTML содержит:


<meta http-equiv="content-type" content="text/html;charset=windows-1251"></meta>

<p><strong>Оформить заявку или задать вопрос:</strong></p>
<div><form action="http://sayt/mail.php" method="post">
<p> Имя:</p>
<p>
<input type="text" name="nick" size="50" />
</p>
<p>E-mail (обязательно для заполнения):</p>
<p><input type="text" name="email" size="50" /></p>
<p>Телефон:</p>
<p>
<input type="text" name="telefon" size="50" />
</p>
<p><span class="red">Текст сообщения</span><strong>:</strong></p>
<p><textarea name="msg" cols="50" rows="6"></textarea>
</a></p>
<p><input type="submit" value="Отправить сообщение!" id="submit_mail" /></p>
<p>Позвонить по телефону: 11-111-11</p>
</form>

1) Если меняю в PHP на 1251, то появляются иероглифы в сообщениях на подобе - echo "Убедитесь, что вы ввели корректный E-mail!$back";

2) Как бы не менял кодировку, мне на емаил всегда приходит письмо с иероглифами,

при этом, русские символы, введённые в поля: Имя, Текст сообщения отображаются корректно. Телефон (цифры, введённые в поле телефон) не показываются.

Спасибо!

I
На сайте с 04.01.2010
Offline
26
#1

нужно чтобы и страница и настройки сервера были одинаковыми, в вашем случае, если:

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

нужен утф-8 я бы посмотрел настройки веб сервера, поставьте там тоже утф-8, да и желательно сам php/html файл конвертнуть в утф...

Так же почитайте http://ru2.php.net/manual/ru/function.mail.php

Крякозяблики только в теме письма? только в теле? или везде?

T
На сайте с 28.02.2011
Offline
31
#2

Иероглифы только в теле письма

Адресс: $email\n
Телефон: $telefon\n
Отправил(а) вам письмо с сайта - \"$title\"\n
Тема - $delivery, со следующим содержанием:\n\n$msg";

Все русские буквы в данном коде приходя в виде иероглифов.

---------- Добавлено 04.03.2012 в 16:10 ----------

Разобрался!

1) Скачиваем NotePad++

2) Открываем им файл PHP

3) Нажимаем на вкладку "кодировка" и выбираем "преобразовать в ANSI"

4) В файле PHP меняем

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

на

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

Всем спасибо, за помощь!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий