мучает меня вопрос давно, на каком основании выбирается кодировка соединения клиента mysql.
в данный момент ф. на php mysql_client_encoding($link) возращает: The current character set is: latin1
почему?? ведь у меня всё что можно установлено в utf-8.
в php-скрипте посылается заголовок:
header('Content-type: text/html; charset=utf-8');
дополнительно печатаются теги (всё по w3c):
echo '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head>';
на сервере тоже всё в utf-8:
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> show variables like 'col%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
сама БД и Таблица тоже в utf-8:
mysql> show create table prtg;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| prtg | CREATE TABLE `prtg` (
`id_prtg` int(11) NOT NULL AUTO_INCREMENT,
`device_id` int(11) DEFAULT NULL,
`device_ip` varchar(20) DEFAULT NULL,
`device_name` varchar(20) DEFAULT NULL,
`device_name_short` varchar(10) DEFAULT NULL,
`sensor_info` varchar(255) DEFAULT NULL,
`sensor_cash_num` int(11) DEFAULT NULL,
`sensor_cash_address` varchar(100) DEFAULT NULL,
`sensor_cash_phone` varchar(50) DEFAULT NULL,
`sensor_cash_isp` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id_prtg`)
) ENGINE=MyISAM AUTO_INCREMENT=765 DEFAULT CHARSET=utf8 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create schema offices;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| offices | CREATE DATABASE `offices` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
в конфигурационном файле веб-сервера apache кодировка по умолчанию закоментирована (чтобы кодировка выбиралась на основе того в какой кодировке сохранён документ или какие заголовки посланы).
#AddDefaultCharset UTF-8
в конфигурационном файле php.ini тоже кодировка по умолчанию закоментирована
;default_charset = "iso-8859-1"
так скажите люди добрые откуда же берется кодировка соединения latin1?
сил моих нет гуглить, везде пишут одно и тоже: используйте set names или настройте mysql принудительно принимать кодировку соединения.. Почему я должен принудительно указывать каждый раз в какой кодировке устанавливать соединения?? Ну, бред блин!!! На каком-то же основании он выбирает latin1! Откуда он его берёт?