Непонятные проблемы с кодировкой (MySQL plugin R39)
#1

Уже и неудобно спрашивать про эту кодировку, но никак не могу решить проблему, все-таки пишу сюда. Я пользовался поиском и ничего мне не помогло (точнее, помогает лишь на первое время, об этом далее). В общем, проблема в том, что после запуска сервера все работает хорошо - кириллица выгружается и сохраняется без проблем. Но спустя некоторое время работы сервера (никакой закономерности не смог вывести) вместо нее уже отображаются кракозябры, либо вопросительные знаки (в зависимости от mysql_set_charset).

Кодировка таблиц - utf8_general_ci.

Пробовал сделать всячески:
  1. pawn Код:
    mysql_set_charset("utf8");
    mysql_tquery(connection, "SET NAMES cp1251", "", "");
    mysql_tquery(connection, "SET SESSION character_set_server='utf8'", "", "");
    Какое-то время все ОК, но ни с того, ни с сего:


    Кириллица перестает правильно загружаться и не сохраняется.

  2. Решил посмотреть исходник плагина. Пришел к выводу, что mysql_set_charset это mysql_set_character_set. Почитал описание, сделал так:
    pawn Код:
    mysql_set_charset("cp1251");
    Все работало хорошо. До поры, до времени. Где-то через пол часа работы сервера зашел, чтобы проверить. Вместо кириллицы уже выгружались вопросительные знаки.
Если еще раз сделать запрос SET NAMES cp1251, то все опять становится нормально. Так вот, где же я нагрешил? Спасибо за внимание.
Reply
#2

Может соединение обрывается, после чего автоматически восстанавливается, а кодировка при этом сбрасывается на дефолтную.
Reply
#3

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
Может соединение обрывается, после чего автоматически восстанавливается, а кодировка при этом сбрасывается на дефолтную.
Тоже об этом думал, но если с 1-м способом все ясно, то разве с 2-м способом после восстановления соединения проблемы должны быть? Кодировка сама же должна восстанавливаться после реконнекта, или я ошибаюсь? Да и в логе ничего нет.

Вот вчера утром поставил сервер работать, все время было нормально, ночью заходил проверял и сегодня с утра. Только что зашел, вместо "Кириллица и latin" - "????????? ? latin" (это с mysql_set_charset("cp1251")). Делаю mysql_reconnect либо SET NAMES cp1251 и опять все хорошо .

UPD: опять все хорошо, но не на долго, хватило всего на пару минут и опять то же самое. И вот, что еще заметил. Перед тем, как зайти на сервер, в phpmyadmin заходил во вкладку "Процессы", там не было того, что обычно есть при соединении с игровым сервером. Потом, когда он появился, я нарочно его завершил и возникла точно такая же проблема с кодировкой.
Reply
#4

Такая же проблема была но я каждый час для устранения опять запрос SET CHARSET отправлял.
Reply
#5

Наверное все-таки дело в обрыве и возобновлении соединения. Спрашивал у разработчика плагина, он сказал, что кодировка не восстанавливается и он планирует это добавить в R40.

Quote:
Quote:
Originally Posted by stabker
Посмотреть сообщение
I have one question. Charset (mysql_set_charset) is automatically restored after restoring a broken connection?

Thanks and sorry for my bad English!
Quote:
Originally Posted by maddinat0r
Посмотреть сообщение
No, it is not restored, so you have to call it again.
I might add an automatic restore option in R40, controllable trough mysql_option.
Reply
#6

Quote:
Originally Posted by stabker
Посмотреть сообщение
Наверное все-таки дело в обрыве и возобновлении соединения. Спрашивал у разработчика плагина, он сказал, что кодировка не восстанавливается и он планирует это добавить в R40.
Это хорошо. Получается мы заострили на этом внимание и фикс всё таки будет.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)