![]() |
#21
|
|||
|
|||
![]()
Anton Gorlov написал(а) к Alex Korchmar в Sep 17 20:44:26 по местному времени:
Привет Alex! 09 сен 17 года (а было тогда 16:12) Alex Korchmar в своем письме к Victor Sudakov писал: VS>> а в противном случае (без выставления VS>> skip-character-set-client-handshake) какая логика? AK> логика clienhandshake из библиотеки libmysql.so, а она в разных AK> версиях - диаметрально противоположная. Кстати пых-пыховый mysqlnd(mysqlind) вообще не юзает libmysql. И что самое интересное *nd драйвер в php ломают чаще и изощрённее, чем просто phpmysql(i).nd С уважением. Anton aka Stalker Linux Registered User #386476 [#TEAM:*#] [#Злой СисОп_#] [*Нeavy Metal!*] [*_Усачи] --- GoldED+/LNX 1.1.5-b20160322 |
#22
|
|||
|
|||
![]()
Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 01:37:02 по местному времени:
09 сент. 2017, суббота, в 08:17 NOVT, Victor Sudakov написал(а): VS> Ну может кто другой знает. Вопрос чисто практический: вот отредактирую я для VS> удобства mysqldump какой-нибудь /usr/local/etc/my.cnf, и у VS> пользователей дружно поломается кодировка в сайтах, написанных с использованием VS> php-{mysql,mysqli,pdo_mysql}. Или таки нет? my.cnf позволяет ограничить настройки конкретным клиентом, вместо секции [client] сделай секцию [mysqldump] и на php она не повлияет. Eugene -- Господа Действительного Положения Вещей предохраняют себя от голода своим богатством, от общественного мнения - тайной и анонимностью, от частной критики - законами против клеветы и тем, что средства связи находятся в их распоряжении. (Норберт Винер) --- slrn/1.0.2 (FreeBSD) |
#23
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Alex Korchmar в Sep 17 11:42:06 по местному времени:
Dear Alex, 09 Sep 17 16:11, Alex Korchmar wrote to me: VS>> А по-другому спрошу, PНP-клиенты вообще имеют где-то настройки и VS>> умолчания, AK> даже если и имеют - они зависят от погоды на марсе, и лучше им эти AK> идиотские настройки отрывать где только можно. На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко использует функцию mysqlsetcharset(), в каком-то таком виде if ($this->link = @mysql_connect($host, $user, $pass, 1)) { mysqlsetcharset('cp1251', $this->link); ... } Видимо она и влияет на charset в handshake. Но какой выбирается charset, если эту функцию не использовать - я нигде даже нагуглить не смог. Глобально отключить charset в handshake (на уровне mysqld) я не могу, т.к. разные клиенты/сайты ходят с разными кодировками, но SET NAMES не все делают. Им тогда сюрприз случится, если я отключу в сервере. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#24
|
|||
|
|||
![]()
Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 15:03:46 по местному времени:
11 сент. 2017, понедельник, в 10:42 NOVT, Victor Sudakov написал(а): VS> На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко использует VS> функцию mysqlsetcharset(), в каком-то таком виде VS> if ($this->link = @mysql_connect($host, $user, $pass, 1)) { VS> mysqlsetcharset('cp1251', $this->link); VS> ... } VS> Видимо она и влияет на charset в handshake. Но какой выбирается charset, если VS> эту функцию не использовать - я нигде даже нагуглить не смог. https://dev.mysql.com/doc/refman/5.7...acter-set.html 27.8.7.67 mysqlset_characterset() This function is used to set the default character set for the current connection. The string csname specifies a valid character set name. The connection collation becomes the default collation of the character set. This function works like the SET NAMES statement, but also sets the value of mysql->charset, and thus affects the character set used by mysqlreal_escapestring() https://dev.mysql.com/doc/refman/5.7/en/set-names.html SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT} This statement sets the three session system variables charactersetclient, characterset_connection, and character_setresults to the given character set. Setting characterset_connection to charsetname also sets collationconnection to the default collation for charsetname. See Section 10.1.4, Connection Character Sets and Collations. Ну и далее https://dev.mysql.com/doc/refman/5.7...onnection.html Eugene --- slrn/1.0.2 (FreeBSD) |
#25
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 20:16:28 по местному времени:
Dear Eugene, 12 Sep 17 15:03, you wrote to me: VS>> На тех сайтах, с которыми я сейчас разбираюсь, вебмастер широко VS>> использует функцию mysqlsetcharset(), в каком-то таком виде if VS>> ($this->link = @mysql_connect($host, $user, $pass, 1)) { VS>> mysqlsetcharset('cp1251', $this->link); VS>> ... } VS>> Видимо она и влияет на charset в handshake. Но какой выбирается VS>> charset, если эту функцию не использовать - я нигде даже ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VS>> нагуглить не смог. EG> https://dev.mysql.com/doc/refman/5.7...acter-set.html EG> 27.8.7.67 mysqlset_characterset() EG> This function is used to set the default character set for the current EG> connection. The string csname specifies a valid character set name. EG> The connection collation becomes the default collation of the EG> character set. This function works like the SET NAMES statement, but EG> also sets the value of mysql->charset, and thus affects the character EG> set used by mysqlreal_escapestring() EG> https://dev.mysql.com/doc/refman/5.7/en/set-names.html EG> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT} EG> This statement sets the three session system variables EG> characterset_client, character_setconnection, and EG> charactersetresults to the given character set. Setting EG> characterset_connection to charsetname also EG> sets collation_connection to the default collation for EG> charset_name. See Section 10.1.4, Connection Character Sets and EG> Collations. В процитированном не говорится, какой и откуда берется charset, если все эти mysqlset_charset() и mysql_set_characterset() не использовать в коде вообще никак. EG> Ну и далее EG> https://dev.mysql.com/doc/refman/5.7...onnection.html Если там далее ответ на мой вопрос всё-таки есть, ты бы лучше ответ и процитировал. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#26
|
|||
|
|||
![]()
Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 00:56:11 по местному времени:
12 сент. 2017, вторник, в 19:16 NOVT, Victor Sudakov написал(а): VS>>> Видимо она и влияет на charset в handshake. Но какой выбирается VS>>> charset, если эту функцию не использовать - я нигде даже VS> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VS>>> нагуглить не смог. EG>> https://dev.mysql.com/doc/refman/5.7...acter-set.html EG>> 27.8.7.67 mysqlset_characterset() EG>> This function is used to set the default character set for the current EG>> connection. The string csname specifies a valid character set name. EG>> The connection collation becomes the default collation of the EG>> character set. This function works like the SET NAMES statement, but EG>> also sets the value of mysql->charset, and thus affects the character EG>> set used by mysqlreal_escapestring() EG>> https://dev.mysql.com/doc/refman/5.7/en/set-names.html EG>> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT} EG>> This statement sets the three session system variables EG>> characterset_client, character_setconnection, and EG>> charactersetresults to the given character set. Setting EG>> characterset_connection to charsetname also EG>> sets collation_connection to the default collation for EG>> charset_name. See Section 10.1.4, Connection Character Sets and EG>> Collations. VS> В процитированном не говорится, какой и откуда берется charset, если все эти VS> mysqlset_charset() и mysql_set_characterset() не использовать в коде вообще VS> никак. Ну как же "не говорится". Говорится, что оно is used to set, то есть установить (читай: сменить дефолт), а конкретнее: This function works like the SET NAMES statement плюс меняет mysql->charset. И говорится, что конкретно делает SET NAMES, какие три системные переменные оно меняет. Дефолты системных переменных и для сервера, и для клиента задаются в my.cnf, но клиенты типа PНP могут выставлять клиентский charset в зависимости от собственных конфигов и никаких предположений на этот счет делать нельзя, а только читать доку по PНP. Если же ты имеешь в виду серверный дефолт, который используется если ни в каких конфигах его вообще не прописывать, то как описано в https://dev.mysql.com/doc/refman/5.7...n-options.html он определяется на этапе компиляции и если не перепределён, то будет DEFAULTCНARSET=latin1 и DEFAULT_COLLATION=latin1_swedishci. Eugene -- Смотри, но не смей трогать --- slrn/1.0.2 (FreeBSD) |
#27
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 10:58:56 по местному времени:
Dear Eugene, 13 Sep 17 00:56, you wrote to me: VS>>>> Видимо она и влияет на charset в handshake. Но какой выбирается VS>>>> charset, если эту функцию не использовать - я нигде даже VS>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ VS>>>> нагуглить не смог. EG>>> https://dev.mysql.com/doc/refman/5.7...character-set. EG>>> html 27.8.7.67 mysqlset_characterset() This function is used EG>>> to set the default character set for the current connection. The EG>>> string csname specifies a valid character set name. The EG>>> connection collation becomes the default collation of the EG>>> character set. This function works like the SET NAMES statement, EG>>> but also sets the value of mysql->charset, and thus affects the EG>>> character set used by mysqlreal_escapestring() EG>>> https://dev.mysql.com/doc/refman/5.7/en/set-names.html EG>>> SET NAMES {'charsetname' [COLLATE 'collationname'] | DEFAULT} EG>>> This statement sets the three session system variables EG>>> characterset_client, character_setconnection, and EG>>> charactersetresults to the given character set. Setting EG>>> characterset_connection to charsetname also EG>>> sets collation_connection to the default collation for EG>>> charset_name. See Section 10.1.4, Connection Character Sets and EG>>> Collations. VS>> В процитированном не говорится, какой и откуда берется charset, VS>> если все эти mysqlset_charset() и mysql_set_characterset() не VS>> использовать в коде вообще никак. EG> Ну как же "не говорится". Говорится, что оно is used to set, EG> то есть установить (читай: сменить дефолт), а конкретнее: Вот мне и интересно, каков тот_ _дефолт, который мы собираемся сменить, применив эту функцию. [dd] EG> клиенты типа PНP могут EG> выставлять клиентский charset в зависимости от собственных конфигов и EG> никаких предположений на этот счет делать нельзя, а только читать доку EG> по PНP. Вот про этот дефолт я и говорю, но в доке по PНP ничего определенного не нашел. Вдруг кто знает. EG> Если же ты имеешь в виду серверный дефолт, Нет, я имею в виду PНP-шный. Я бы его задал где-нибудь в php.ini и получил бы большую предсказуемость. Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это похоже вряд ли. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#28
|
|||
|
|||
![]()
Eugene Grosbein написал(а) к Victor Sudakov в Sep 17 13:35:42 по местному времени:
13 сент. 2017, среда, в 09:58 NOVT, Victor Sudakov написал(а): VS> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это похоже вряд ли. В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой протокол MySQL и его API и с которым линкуется бинарный код интерпретатора PНP (включая сюда и его модули). Eugene -- Поэты - страшные люди. У них все святое. --- slrn/1.0.2 (FreeBSD) |
#29
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 16:17:56 по местному времени:
Dear Eugene, 13 Sep 17 13:35, you wrote to me: VS>> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это VS>> похоже вряд ли. EG> В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой EG> протокол MySQL и его API и с которым линкуется бинарный код EG> интерпретатора PНP (включая сюда и его модули). О, вот так понятно объяснил, спасибо. Только что посмотрел, все три php56-mysql, php56-mysqli, php56-pdo_mysql используют libmysqlclient.so.18 по информации "pkg info", и стало быть, надо быть поосторожнее с my.cnf, видимо написанное в секции [client] может на них повлиять. Но всё это хозяйство собрано с "MYSQLND=off", надо попробовать пересобрать с "MYSQLND=on" и посмотреть, исчезнет ли зависимость. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#30
|
|||
|
|||
![]()
Victor Sudakov написал(а) к Eugene Grosbein в Sep 17 18:00:32 по местному времени:
Dear Eugene, 13 Sep 17 16:17, I wrote to you: VS>>> Ну или узнал бы, что PНP-шный клиент смотрит в my.cnf, но это VS>>> похоже вряд ли. EG>> В my.cnf смотрит libmysqlclient.so, в котором реализован сетевой EG>> протокол MySQL и его API и с которым линкуется бинарный код EG>> интерпретатора PНP (включая сюда и его модули). VS> О, вот так понятно объяснил, спасибо. VS> Только что посмотрел, все три php56-mysql, php56-mysqli, VS> php56-pdo_mysql используют libmysqlclient.so.18 по информации "pkg VS> info", и стало быть, надо быть поосторожнее с my.cnf, видимо VS> написанное в секции [client] может на них повлиять. VS> Но всё это хозяйство собрано с "MYSQLND=off", надо попробовать VS> пересобрать с "MYSQLND=on" и посмотреть, исчезнет ли зависимость. В https://dev.mysql.com/doc/apis-php/e...p-mysqlnd.html про кодировки ничего нет. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |