Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
9 / 9 / 5
Регистрация: 14.01.2015
Сообщений: 173

Кодировка раз и навсегда

10.04.2015, 19:21. Показов 1329. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
В общем проблема такая. Есть html файл с формой, данные которой отсылаются на обработчик.php.
Этот php файл обрабатывает sql запрос (к БД) из формы, и возвращает результат тут же.
В html объявлена кодировка через meta-тег. Все php файлы (сам обработчик, и подключаемые к нему файлы) имеют кодировку utf-8. Подключаемая БД имеет такую же кодировку.
В общем все как положено.
В php файлах есть текст ошибок. Например, что-то типа такого:
PHP
1
2
3
4
5
...
if (!(mysqli_connect(хост, пользователь, пароль, бд)) {
echo "<p>Подключение не удалось!</p>";
}
...
проблема в том, что вот этот самый текст "Подключение не удалось!" выводится всякими символами.

самое интересное, что если вызвать
PHP
1
mysqli_character_set_name();
в ответ получаем что кодировка .... latin1
А если попытаться сделать такое
PHP
1
mysqli_set_charset();
то кодировка то устанавливается нужная, а текст ошибки опять выводится символами!

Еще один момент, если через ПКМ посмотреть "Информация о странице", то кодировка файла обработчик.php.... cp-1251!!! Как так, если файл в utf-8?

Эту проблему можно решить, если добавить к php файлу
PHP
1
header('Content-Type: text/html;charset=utf-8');
или в .htaccess прописать
PHP
1
AddDefaultCharset utf-8
Но эти варианты не очень подходят, т.к. они ну как бы не слишком гибкие, что ли...
я так понимаю, что заголовок запроса браузер посылает НЕ в utf-8?

Собственно вопросов по этому поводу два
1. в чем причина, почему так происходит, ведь все файлы и бд в нужной кодировке.
2. как раз и навсегда установить при создании БД/подключении к бд кодировку, чтобы не мучаться с приведенными чуть выше способами?


п.с. кстати, в БД нет таблиц - но это не должно влиять по моему, если, к примеру, не удалось подключиться к бд - и нужно вывести текст ошибки

Добавлено через 7 минут
п.с. на всякий случай: текст выводится в самом обработчик.php (см. код выше)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2015, 19:21
Ответы с готовыми решениями:

Как загрузить картинку раз. И навсегда
Для того чтобы допустим загрузить картинку на форму, нужно указать путь к картинке, и потом если картинку переместить в другое место на...

перевод консоли на русский раз и навсегда
всем привет, я пока в програмировании полный ноль и столкнулся с такой проблемой как перевод консоли на русский язик, я хочу перевести ее...

Разгон один раз и навсегда или когда нужно?
Здравствуйте. Хочу взять процессор AMD FX-8300. Все говорят, что его нужно разгонять. Никогда этим не занимался, поэтому хотел уточнить...

2
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
10.04.2015, 19:45
Цитата Сообщение от Goldsilver Посмотреть сообщение
Как так, если файл в utf-8?
Я думаю, если всё действительно так, как Вы говорите - проблема в том, что сервер отсылает свои данные о кодировке.
Вот это решение нормальное:
PHP
1
AddDefaultCharset utf-8
Для всех файлов задаёт кодировку разом, не нужно писать header.
1
 Аватар для ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
10.04.2015, 19:48
Цитата Сообщение от Goldsilver Посмотреть сообщение
2. как раз и навсегда установить при создании БД/подключении к бд кодировку, чтобы не мучаться с приведенными чуть выше способами?
Итак... Запоминаем
1) Все файлы (php html) сохранять в кодировке UTF-8(без BOM) Notepad++ в помощь или что хочешь на твой вкус. Файл-создать-делаешь кодировку-пишешь код.
2) Создать в корне сайта файл .htaccess с содержанием AddDefaultCharset UTF-8
3) В phpmyadmin (например) при создании базы, указывать кодировку utf_8_general_ci
4) Подключаться к базе так (с указанием кодировки)
PHP
1
2
3
4
5
6
7
8
9
$hostname='localhost';
$username='root';
$password='';
$basename='base';
mysql_connect($hostname, $username, $password) or die (mysql_error());
mysql_select_db($basename) or die (mysql_error());
mysql_query("set character_set_client   ='utf8'");
mysql_query("set character_set_results  ='utf8'");
mysql_query("set collation_connection   ='utf8_general_ci'");
5) В html-php (echo) использовать знакомый метатег
PHP
1
2
3
4
5
6
echo'
<!DOCTYPE html>
<html>
<head>
<title>'.$title.'</title>
<meta http-equiv=Content-Type content="text/html;charset=UTF-8">';
Всё. Да здравствует utf-8 и никаких крякозябр.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2015, 19:48
Помогаю со студенческими работами здесь

Можно ли избавиться раз и навсегда от рефспама Google Analytics?
Каждый день в аналитике всплывают &quot;левые&quot; сайты типа semalt.com semalt.semalt.com buttons-for-website.com blackhatworth.com ...

Давайте раз и навсегда разберемся с получением данных с COM порта
Я прочитал уже около 20 форумов и блогов и везде все профессора пишут о том как подключиться к COM порту и как отправить на него данные, но...

Как избавиться от иконки безопасного извлечения устройства раз и навсегда?
Как избавиться от иконки безопасного извлечения устройства раз и навсегда, чтобы она исчезла совсем и больше никогда не появлялась?:angry:

Решил чётко, раз и навсегда, определить для себя понятие функции
Решил чётко раз и навсегда определить для себя понятии функции, но столкнулся с тем, что в разных источниках понятия функции различаются. К...

СпойлерА навсегда
Добрый день Подскажите понятный код спойлера чтоб открывался закрывался по клику мыши чтоб параметры можно было регулировать код...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru