Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Правильная установка кодировки


Автор: animegirl 19.3.2013, 22:25
Когда года два назад мучилась с кодировками, сказали мне люди использовать после установления соединения такую связку команд:
Код

SET CHARACTER SET utf8;
SET NAMES utf8;


И делала я это, всё это время успешно, не задумываясь, но вот наткнулась на утверждение, что это не верный подход, и надо использовать
Код

mysql_set_charset('utf8');


Вот теперь сижу и думаю, менять коней или не менять, и главное ПОЧЕМУ?

Автор: Fortop 19.3.2013, 23:22
Цитата(animegirl @  19.3.2013,  22:25 Найти цитируемый пост)
И делала я это, всё это время успешно

И продолжай делать.

Автор: Sanchezzz 19.3.2013, 23:23
Функция делает одно и тоже что и 2 запроса.
лично давно отказался от mysql => mysqli  затем к PDO
Код

$pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", 'my_user', 'my_pass');



Автор: Gold Dragon 19.3.2013, 23:28
animegirl, если уж используешь этот подход, то лучше пользуйся функцией, чем выполнять запрос. Так советуют разработчики

Автор: animegirl 20.3.2013, 00:18
Fortop, 
Gold Dragon, 
А вас можно привести к консенсусу? )

Автор: skyboy 20.3.2013, 01:20
http://www.php.net/manual/en/mysqlinfo.concepts.charset.php
http://dev.mysql.com/doc/refman/5.5/en/charset-configuration.html
set names utf8 устанавливает три конфигурационные переменные: кодировку клиента, кодировку соединения и кодировку результата. сложно представить, в каком случае возможно рассогласование, но я бы использовал set names.
mysql_set_charset, с другой стороны, влияет на поведение *_real_escape_string, что не возможно при помощи SQL запроса SET NAMES …
самое надежное(хотя, возможно, и избыточное) — использовать и то, и то smile
самое правильное — разобраться, в каких случаях mysql_set_charset сделает меньше, чем SET NAMES

Автор: animegirl 20.3.2013, 01:30
skyboy, 
Хорошо, сделать всё вместе не проблема, вопрос тогда в каком порядке?
И имеет ли порядок значение?
В результате, всё без исключения должно быть utf8

Автор: Fortop 20.3.2013, 01:51
Цитата(animegirl @  20.3.2013,  00:18 Найти цитируемый пост)
А вас можно привести к консенсусу? ) 

Он прост.
Поскольку твой код делает примерно то же самое что и mysql_set_charset 
То менять шило на мыло - резона нет.

Поэтому пользовалась? Пользуйся и дальше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)