как добавить кодировку при отправки формы в php
Когда приходит результаты формы на email — то это выглядит не четаемо, как это можно исправить? я уже вписал кодировку но почему то продолжает приходить с поломаным текстом. php:
[email protected]'; $EmailSubject = 'Обратный вызов'; $mailheader = "From: ".$_POST["email"]."\r\n"; $mailheader .= "Content-type: text/html; charset=\"utf-8\""; $MESSAGE_BODY .= "Имя: ".$_POST["name"]."\n"; $MESSAGE_BODY .= "Телефон: ".$_POST["phone"]."\n"; mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); ?>
$("#callbackForm").submit(function() < $.ajax(< url: "callback.php", method: "POST", data: < name: $("#callbackForm input[name='name']").val(), phone: $("#callbackForm input[name='phone']").val() >, success: function(data) < $("#callbackForm input[name='name']").val(""), $("#callbackForm input[name='phone']").val(""), $("#subCallback").attr("value", "отправлено"); >>); return false; >);
Отслеживать
задан 13 фев 2017 в 12:12
1,354 16 16 серебряных знаков 31 31 бронзовый знак
что значит поломанным текстом? Возможно с самой формы текст приходит в другой кодировке, попробуйте добавить accept-charset=»UTF-8″ в саму форму
13 фев 2017 в 12:27
вот такое приходит на email п÷я─п╬п╪п╬п╨п╬п╢: 333
Как сменить кодировку php документа c windows-1251 на utf-8?
Здравствуйте!
Как сменить кодировку php документа c windows-1251 на utf-8?
Простое переименование $config[‘charset’] = «windows-1251»; и ему подобных не помогает.
- Вопрос задан более трёх лет назад
- 13649 просмотров
Комментировать
Решения вопроса 1
В редакторе где вы сделали документ выберите другую кодировку и всё
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 2
используйте
header(«Content-Type: text/html; charset=utf-8»);
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Сменить кодировку php документа, можно так-же как и любого другого текстового файла.
Например в notepad++ уже существующий файл достаточно лишь «переконвертировать» в правильную кодировку -> menu -> encoding -> Convert to UTF-8 without BOM.
А если у Вас новый файл, тогда выберите menu -> encoding -> encode in UTF-8 without bom.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- PHP
- +1 ещё
Как сделать кастомную иерархию шаблонов в WordPress?
- 1 подписчик
- 36 минут назад
- 9 просмотров
Кодировка символов и экранирование символов
Кодировка символов должна быть чётко определена, поскольку влияет на каждое действие, в том числе на действия с последствиями для безопасности. Например, механизмы экранирования (такие как mysqli_real_escape_string() для mysqli и PDO::quote() для PDO_MySQL) зависят от этих настроек. Важно понимать, что эти функции не используют кодировку символов определённую в запросе, так например, следующие запросы не будут влиять на поведение этих функций:
Пример #1 Проблемы установки кодировки символов с помощью SQL
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );
// Этот запрос не влияет на поведение $mysqli->real_escape_string();
$mysqli -> query ( «SET NAMES utf8mb4» );
// И этот не влияет на $mysqli->real_escape_string();
$mysqli -> query ( «SET CHARACTER SET utf8mb4» );
// но вот этот запрос повлияет на поведение $mysqli->real_escape_string();
$mysqli -> set_charset ( ‘utf8mb4’ );
// а этот НЕ повлияет, потому что нельзя использовать «-»
$mysqli -> set_charset ( ‘UTF-8’ ); // (utf8mb4, а не UTF-8)
?>
Примеры ниже демонстрируют, как правильно изменять кодировку символов во время выполнения, используя каждый из API.
Замечание: Возможная путаница с UTF-8
Поскольку имена кодировок символов в MySQL не содержат тире/дефис, строка «utf8» применяется в MySQL для установки кодировки UTF-8 (до 3 байт в кодировке Unicode UTF-8). Строка «UTF-8» неприемлема и выбросит ошибку при установке кодировки символов.
Пример #2 Пример установки кодировки символов: mysqli
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );
?php
echo ‘Первоначальная кодировка: ‘ . $mysqli -> character_set_name () . «\n» ;
if (! $mysqli -> set_charset ( ‘utf8mb4’ )) printf ( «Ошибка загрузки кодировки utf8mb4: %s\n» , $mysqli -> error );
exit;
>
echo ‘Ваша текущая кодировка: ‘ . $mysqli -> character_set_name () . «\n» ;
?>
Пример #3 Пример установки кодировки символов: pdo_mysql
mb_internal_encoding
encoding — это имя кодировки, в которую будут преобразовываться входные данные HTTP-запроса, из которой будет конвертироваться HTTP-вывод, а также это кодировка по умолчанию для всех функций, работающих со строками, определёнными в модуле mbstring. Обратите внимание, что внутренняя кодировка полностью отличается от кодировки для многобайтовых регулярных выражений.
Возвращаемые значения
Если аргумент encoding задан, то Возвращает true в случае успешного выполнения или false в случае возникновения ошибки. В этом случае не меняется кодировка символов для многобайтных регулярных выражений. Если аргумент encoding опущен, будет возвращено имя текущей внутренней кодировки.
Ошибки
Начиная с PHP 8.0.0, выбрасывается исключение ValueError , если значение параметра encoding является недопустимой кодировкой. До PHP 8.0.0 вместо этого выдавалась ошибка уровня E_WARNING .
Список изменений
| Версия | Описание |
|---|---|
| 8.0.0 | Теперь параметр encoding может принимать значение null . |
| 8.0.0 | Теперь выбрасывается исключение ValueError , если значение параметра encoding является недопустимой кодировкой. Ранее вместо этого выдавалась ошибка уровня E_WARNING . |
Примеры
Пример #1 Пример использования mb_internal_encoding()
/* Установка внутренней кодировки в UTF-8 */
mb_internal_encoding ( «UTF-8» );
?php
/* Вывод на экран текущей внутренней кодировки */
echo mb_internal_encoding ();
?>
Смотрите также
- mb_http_input() — Определение кодировки символов входных данных HTTP-запроса
- mb_http_output() — Установка/получение кодировки символов вывода HTTP
- mb_detect_order() — Установка/получение списка кодировок для механизмов определения кодировки
- mb_regex_encoding() — Устанавливает/получает текущую кодировку для многобайтового регулярного выражения
User Contributed Notes 7 notes
17 years ago
Especially when writing PHP scripts for use on different servers, it is a very good idea to explicitly set the internal encoding somewhere on top of every document served, e.g.
This, in combination with mysql-statement «SET NAMES ‘utf8′», will save a lot of debugging trouble.
Also, use the multi-byte string functions instead of the ones you may be used to, e.g. mb_strlen() instead of strlen(), etc.
8 years ago
header ( ‘Content-Type: text/html; charset=UTF-8’ );
mb_internal_encoding ( ‘UTF-8’ );
mb_http_output ( ‘UTF-8’ );
mb_http_input ( ‘UTF-8’ );
mb_regex_encoding ( ‘UTF-8’ );
18 years ago
Be aware that the strings in your source files must match the encoding you specify by mb_internal_encoding. It appears the Parser loads raw bytes from the file and refers to its internal encoding to determine their actual encoding.
To demonstrate, the following outputs as espected when the /source/ file is Latin-1 encoded:
mb_internal_encoding ( «iso-8859-1» );
mb_http_output ( «UTF-8» );
ob_start ( «mb_output_handler» );
Now, a typical use of mb_internal_encoding is shown as follows. Make the change to «utf-8» but leave the /source/ file encoding unchanged:
mb_internal_encoding ( «UTF-8» );
mb_http_output ( «UTF-8» );
ob_start ( «mb_output_handler» );
The output will just show the
tag and no text.
Save the file as UTF-8 encoding and then the results will be as expected.
