Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11

Как избавиться от кракозябр?

19.03.2016, 15:05. Показов 2941. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
  
 
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['textarea'])) {$message = $_POST['textarea'];}
 
 
  
 
$address = 'my@mail.com';
$sub = "Имя сайта";
$mes = "Имя: $name \n Email: $email \n  Сообщение: $message";
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
if ($verify == 'true')
 
 
            {
                echo "<p>your message has been sent";
                header("refresh:3;url=http://contacts.html");
            }
       
?>
Тема письма "Имя сайта" в заголовке приходит на русском, а всё остальное в кракозябрах, если отправлять на латинице, то всё норм.

ИмÑ: Пример
Email: primer@mail.com
Сообщение: Пример


Имя: Primer
Email: primer@mail.com
Сообщение: Primer

В чём проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2016, 15:05
Ответы с готовыми решениями:

Как в консоли включить русский язык вместо кракозябр?
Решил попробовать себя и на с++ Первый же вопрос: как в консоли включить русский язык вместо кракозябр? #include&lt;iostream&gt; using...

Вывод кракозябр
??????????? 1 ?????? ????? ???? ????????? Типа такого, пытался задать кодировку mysql_query('set_charset(&quot;utf8&quot;)'); ...

Отображение кракозябр в IE6-IE7
Добрый день не пойму почему у меня в на сайту в Интернете Эксплорере в 6 и 7 версиях кириллический текст отображается в кракозябябрах?...

22
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
19.03.2016, 15:19
посмотрите
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 15:21  [ТС]
Это я увидел уже, получается, что UTF-8 распозналась как windows-1252, а как исправить это?
И почему при отправке латиницей "Имя" и "Сообщение" приходит нормально на русском?
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
19.03.2016, 15:26
HTML5
1
<meta charset="utf-8">
PHP
1
header('Content-Type: text/html; charset=utf-8');
либо
В Notepad++ Меню -> Кодировки -> Преобразовать в UTF-8 без BOM.
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 15:41  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 header('Content-Type: text/html; charset=utf-8'); 
 
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['textarea'])) {$message = $_POST['textarea'];}
 
 
  
 
$address = 'vetveles@veles.byethost18.com';
$sub = "Ветеринарная клиника Veles";
$mes = "Имя: $name \n Email: $email \n  Сообщение: $message";
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
if ($verify == 'true')
 
 
            {
                echo "<p>your message has been sent";
                header("refresh:3;url=http://veles.byethost18.com/site/contacts.html");
            }
        
  
?>

В html. где расположена сама форма обратной связи тоже стоит:

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


И кракозябры при написании кириллицей на прежнем месте.



В N++ показывает кодировка без BOM.
0
(ノಠ益ಠ)ノ彡┻━┻
 Аватар для N3stY
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
19.03.2016, 18:07
icescrm, эмейл нужно кодировать не UTF-8, а WINDOWS-1251
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 18:23  [ТС]
Меняю на windows-1251 и тоже самое:
Пишу на латинице - всё нормально,
Пишу на кириллице - всё в кракозябрах.
0
(ノಠ益ಠ)ノ彡┻━┻
 Аватар для N3stY
152 / 152 / 78
Регистрация: 05.06.2014
Сообщений: 710
Записей в блоге: 2
19.03.2016, 21:02
icescrm, ну я ткну пальцем в небо тк. использую для этого smtp, но все же
PHP
1
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = \"utf-8\"\r\nFrom:$email");
И еще вот рабочий пример

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
        $to            = $_POST['f_email'];//тот адрес который укажешь в форме туда и отправиться данные
        $from          = 'no-repeat@mail.com';
        $title          = $_POST['f_name']; 
        $name         = $_POST['f_name'];
        $birth_date = $_POST['f_date'];     
 
// Текст письма
$mess = "
Имя и фамилия: $name<br /><br />  
Дата рождения: $birth_date<br />
";
 
// функция, которая отправляет наше письмо
$headers = 'From: test <'.$from.'>' . "\r\n";
$headers .= "Content-type: text/html; charset="utf-8"";
mail($to, $title, $mess, $headers); 
echo 'Спасибо! Ваше письмо отправлено.'; 
?>
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 22:07  [ТС]
Не получается.
А здесь, что можем быть не так?

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    //declare our assets 
    $name = stripcslashes($_POST['name']);
    $emailAddr = stripcslashes($_POST['email']);
    $comment = stripcslashes($_POST['message']);
    $subject = stripcslashes($_POST['subject']);
        $page = stripcslashes($_POST['page']);
        $headers = "From: \"$name\" <$emailAddr>\r\n";
    $headers .= "Content-type: text/plain; charset=UTF-8\r\n";
    $contactMessage =  
"Имя отправителя: $name <$emailAddr>
        
$comment
 
Письмо отправлено со страницы: $page
IP отправителя: $_SERVER[REMOTE_ADDR]";
        
        //send the email
        mail('my@mail.com', $subject, $contactMessage, $headers);
        echo('success'); //return success callback
?>

Теперь на почту приходит пустое сообщение и без разницы на каком языке:

Имя отправителя: <>
Письмо отправлено со страницы:
IP отправителя: xx.xxx.xxx.x
Spam Filtered (17683234)



Может быть дело в хостинге бесплатном?
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
19.03.2016, 22:16
source полученного письма покажите
0
16 / 12 / 13
Регистрация: 05.01.2015
Сообщений: 66
19.03.2016, 22:17
Дело точно не в хостинге. Проверьте значения в $_POST
PHP
1
print_r($_POST);
Скорее всего они пусты.
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 22:37  [ТС]
source полученного письма покажите


Вот:

Received: from sendmail.free.byetcluster.com (2813427185.ifastnet.org [185.27.134.28])
by freemail.byetcluster.com (Postfix) with ESMTP id EE4A36E5A72
for <vetveles@veles.byethost18.com>; Sat, 19 Mar 2016 15:26:52 -0400 (EDT)
Received: from localhost.localdomain (4013427185.ifastnet.org [185.27.134.40])
by sendmail.free.byetcluster.com (Postfix) with ESMTP id C4F7B3120007
for <vetveles@veles.byethost18.com>; Sat, 19 Mar 2016 22:26:52 +0300 (MSK)
Date: Sat, 19 Mar 2016 15:27:06 -0400
To: vetveles@veles.byethost18.com
From: """" <17683234@hostingaccount.com>
Subject:
Message-ID: <a4becbf07827b7fe36ffc70f686d43f5@localh ost.localdomain>
X-Priority: 3
X-Mailer: PHPMailer 5.2.1
(http://code.google.com/a/apach... phpmailer/)
MIME-Version: 1.0
Return-Path: 17683234@hostingaccount.com
Content-Type: text/plain; charset=UTF-8; charset=
Content-Transfer-Encoding: quoted-printable
Добавлено через 1 минуту
Code
1
print_r($_POST);

Где проверить значения?
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
19.03.2016, 22:47
subject, from и to, если там есть не латинские символы, должны быть в base64 (ф-я mb_encode_mimeheader())
это по RFC, и по опыту дохрена кто не увидит их иначе
Цитата Сообщение от icescrm Посмотреть сообщение
From: """" <17683234@hostingaccount.com>
здесь убрать """"
там вообще должно быть только 2 кавычки, но если в них пусто, то они и не нужны
Content-Type: text/plain; charset=UTF-8; charset=
здесь убрать charset=
Content-Transfer-Encoding: quoted-printable
заменить на: Content-Transfer-Encoding: 8bit
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
19.03.2016, 23:27  [ТС]
Где "здесь убрать"?
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
19.03.2016, 23:33
где где
где втыкали, там и убирайте )
вы тут были кстати, примеры там видели? читайте внимательно и сделайте, как там
там ещё и в комментах примеры
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
20.03.2016, 00:51  [ТС]
Всем спасибо, нашёл вариант, который присылает почту без кракозябр.)


contact-form.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
/* Задаем переменные */
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$tel = htmlspecialchars($_POST["tel"]);
$website = htmlspecialchars($_POST["website"]);
$message = htmlspecialchars($_POST["message"]);
$bezspama = htmlspecialchars($_POST["bezspama"]);
 
/* Ваш адрес и тема сообщения */
$address = "pochta@kakoy-to-sajt.com";
$sub = "Сообщение с сайта ХХХ";
 
/* Формат письма */
$mes = "Сообщение с сайта ХХХ.\n
Имя отправителя: $name 
Электронный адрес отправителя: $email
Телефон отправителя: $tel
Сайт отправителя: $website
Текст сообщения:
$message";
 
 
if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
{
/* Отправляем сообщение, используя mail() функцию */
$from  = "From: $name <$email> \r\n Reply-To: $email \r\n"; 
if (mail($address, $sub, $mes, $from)) {
    header('Refresh: 5; URL=http://biznessystem.ru');
    echo 'Письмо отправлено, через 5 секунд вы вернетесь на сайт XXX';}
else {
    header('Refresh: 5; URL=http://biznessystem.ru');
    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на страницу YYY';}
}
exit; /* Выход без сообщения, если поле bezspama заполнено спам ботами */
?>
html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<form class="contact_form" action="contact-form.php" method="post">
    <p>
            <label for="name">Имя:</label>
            <input type="text"  name="name" placeholder="Введите ваше имя" required />
        </p>
        <p>
            <label for="email">Email:</label>
            <input type="email" name="email" placeholder="Введите электронный адрес" required />
            <span class="form_hint">Правильный формат "name@something.com"</span>
        </p>
        <p>
            <label for="tel">Телефон:</label>
            <input type="tel" name="tel" placeholder="Введите номер телефона" required />
            <span class="form_hint">Правильный формат "+7-123-4567890"</span>
        </p>
        <p>
            <label for="website">Сайт:</label>
            <input type="url" name="website" placeholder="Введите адрес вашего сайта" pattern="(http|https)://.+"/>
            <span class="form_hint">Правильный формат "http://name.com"</span>
        </p>
        <p>
            <label for="message">Текст сообщения:</label>
            <textarea name="message" cols="40" rows="6" required ></textarea>
        </p>
        <input name="bezspama" type="text" style="display:none" value="" />
        <p>
            <button class="submit" type="submit">Отправить сообщение</button>
        </p>
</form>
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
20.03.2016, 01:02
ENT_QUOTES забыли:
PHP
1
htmlspecialchars($_POST["name"],ENT_QUOTES)
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
20.03.2016, 01:06  [ТС]
Зачем так надо, если всё работает?
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
20.03.2016, 01:09
чтобы одиночные кавычки тоже кодировались
0
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 11
20.03.2016, 01:11  [ТС]
Я не совсем понимаю, если код работает и письма приходят как надо, то чего ещё кодировать? Объясните, если не затруднит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2016, 01:11
Помогаю со студенческими работами здесь

Вывод кракозябр вместо английских букв
Доброго времени суток. Пыталась разобраться самостоятельно, но, к сожалению, недостаточно опыта. Пыжусь в Visual Studio 2017 ...

При просмотре сайта не отображается на русском информация,а ввиде кракозябр
При просмотре сайта не отображается на русском информация,а ввиде кракозябр... Кто сталкивался? Подскажите,как это исправить?

Один и тот же шрифт gost type A во всех программах отображается нормально, а в word - в виде кракозябр
Здравствуйте такой вопрос . есть русский шрифт gost type A (шрифт во вложении в виде архива) Один и тот же шрифт gost type A во всех...

Как избавиться от вируса создающего ярлыки на флэшке? как исправить,подскажите
Проверяла Вебом,нашёл и удалил BackDoor!На этом всё???Но нашёл его на компе,а не на фдэщке

Статический метод как точка входа в поток - как избавиться
Привет всем.Вопрос такой: использую потоки в своей программе,они создаются и уничтожаются в классе, и в классе так же находится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru