Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 28.04.2018
Сообщений: 14
1

Кодировка в БД

28.04.2018, 16:04. Просмотров 928. Ответов 3


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

Есть БД. Есть php-скрипт, который добавляет данные в БД.
Все кириллические буквы выглядят в БД абракадаброй, но однако при выводе php-скриптом всё отображается нормально. Я бы забил, но при таком раскладе невозможно делать выборки через WHERE по кириллическим столбцам.

Кодировка БД вроде бы UTF-8. PHP-скрипт в кодировке UTF-8 (смотрю через notepad++). Хеадер прописан.
Объявления кодировок в sql отправляю.

Что же здесь не так?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<html>
<html lang="ru"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head>
</html>
<?php
header('Content-Type: text/html; charset=UTF-8');
 
$ts_pw = posix_getpwuid(posix_getuid());
$ts_mycnf = parse_ini_file($ts_pw['dir'] . "/replica.my.cnf");
$db = mysql_connect('xxx.yyy', $ts_mycnf['user'], $ts_mycnf['password']);
unset($ts_mycnf, $ts_pw);
mysql_select_db('s12345_mybd', $db);
 
mysql_query("set_client='utf8'");
mysql_query("set character_set_results='utf8'");
mysql_query("set collation_connection='utf8_general_ci'");
mysql_query("SET NAMES `utf8`");
 
$query = "INSERT INTO templates (title, link, type) VALUES ('Тест', 'test', 'test')";
$result = mysql_query ( $query );
mysql_close ( $connect);
?>
И вот так отображается результат этого запроса
Кодировка в БД


Вот переменные кодировок в БД
Кодировка в БД


Версии: php 5.5.9-1ubuntu4.24 / 10.0.33-MariaDB
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2018, 16:04
Ответы с готовыми решениями:

Кодировка программы и кодировка базы данных
В общем в архиве стандартный пример и одна из программ по редактированию sqlite. Проблема...

Кодировка
Привет всем. Проблема такая: заместо русских букв из базы данных MySQL выводятся знаки вопроса...

Кодировка XP и 7
В общем случилась такая беда. Работал работу на Delphi на машине под XP, потом наш отдел...

кодировка
При связке Delphi с MySql возникает проблема, имена таблиц, написанные русскими буквами в MySql,в...

3
1111 / 554 / 318
Регистрация: 21.06.2012
Сообщений: 1,852
28.04.2018, 17:58 2
PHP
1
mysql_query("set_client='utf8'");
Вы для какого соединения устанавливайте? Может так:
PHP
1
mysql_query("set_client='utf8'", $db);
и еще, этот код ошибок не выдаёт:
PHP
1
2
3
4
5
<html>
<html lang="ru"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head>
</html>
<?php
header('Content-Type: text/html; charset=UTF-8');
?
сначала нужно отправить заголовки
PHP
1
header('Content-Type: text/html; charset=UTF-8');
а уже потом выводить тело документа
HTML5
1
2
<html lang="ru"><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head>
</html>
и если мы посылаем хедер с нужной кодировкой, то до этого:
HTML5
1
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
дело не дойдет, это бесполезно.
0
2 / 2 / 1
Регистрация: 28.04.2018
Сообщений: 14
28.04.2018, 18:18  [ТС] 3
Спасибо за ответ, но указание соединений и, конечно, выпиливание html части не помогло.
Всё такие же кракозябры вносит в базу.

Вы для какого соединения устанавливайте? Может так:
А он разве не последнему активному соединению посылает? «Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect()»
0
1111 / 554 / 318
Регистрация: 21.06.2012
Сообщений: 1,852
28.04.2018, 19:11 4
Лучший ответ Сообщение было отмечено Sgrb как решение

Решение

set_client='utf8' может: SET character_set_client='utf8'" ?
PHP
1
mysql_query("SET NAMES `utf8`");
зачем здесь косые кавычки?
Попробуйте так прописать:
PHP
1
2
3
4
mysql_query("SET NAMES 'utf8'", $db);
mysql_query("SET character_set_client = 'utf8'", $db);
mysql_query("SET character_set_connection = 'utf8'", $db);
mysql_query("SET character_set_results = 'utf8'", $db);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2018, 19:11

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

кодировка
всем привет!... не знаю в чем проблема - при создание сайта и БД указал utf8, открываю сайт через...

Кодировка
Здравствуйте) Ребята, нужна помощь. Есть код отправляющий данные с формы на email. Всё как бы...

Кодировка
Доброго времени суток всем, вот решил написать простой ВК Клиент, но есть кое какие проблемы с...

Кодировка
Есть файл index.tmpl в windows 1252 кодировке, и там русские символы выглядят примерно так :...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.