1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

GHostOne MySQL + русские комментарии банов

Тема в разделе 'Основные вопросы', создана пользователем Deals, 10 мар 2010.

  1. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Возникла проблема при использовании русских комментариев банов.
    GHostOne записывает в БД русский текст. Кодировка в БД стоит UTF-8, utf8_general_ci
    В итоге имею лабуду на подобии этого
    Теперь вопрос, какую кодировку использует GHostOne и какую нужно ставить в MySQL для корректного отображения?
  2. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    А тебе для каких целей то надо чтоб в базе было всё красиво???
    Для вывода в игре - всё корректно
    Для вывода на сайт - тоже всё будет корректно.
    Вообще сам варик использует утф-8 только западную кодировку вроде
  3. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Точно. В игре русские символы нормально отображает. Спасибо за инфу.
    Еще вопросик... почему ни Navicat ни сам GHostOne не может нормально прочитать данную информацию? Если они тоже использую UTF-8 кодировку... ???
  4. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Дело в том что варкрафт использует утф-8(в том числе и кирилический) а оболочка уана использует тот же утф-8 только западный (или как то так, немного подзабыл уже)
    Я делал чтоб в оболочке отображалось всё правильно, но уже точно не вспомню как, гдето вроде 1 строку прописал, попробую как вспомню-отпишусь.
  5. CyraX Ньюфаг

    Сообщения:
    1
    Спасибы:
    0
    Тоже столкнулся недавно с этой проблемой, повозился с кодировками, но так и не получилось. Zarj вспомни плз, очень прошу :'(
  6. Freeze000 Ньюфаг

    Сообщения:
    27
    Спасибы:
    0
    Ага очень неприятная тема, а кроме "царя" никто не шарит?
  7. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Отображение можно исправить только компилировать.
    Решение:

    Найти в файле ghostdbmysql.cpp следующий код (~69 строка):
    Код:
    	my_bool Reconnect = true;
    	mysql_options( Connection, MYSQL_OPT_RECONNECT, &Reconnect );
    	
    	if( !( mysql_real_connect( Connection, m_Server.c_str( ), m_User.c_str( ), m_Password.c_str( ), m_Database.c_str( ), m_Port, NULL, 0 ) ) )
    
    И добавить:

    Код:
    mysql_options( Connection, MYSQL_SET_CHARSET_NAME, "utf8");
    Должно выйти:

    Код:
    	my_bool Reconnect = true;
    	mysql_options( Connection, MYSQL_OPT_RECONNECT, &Reconnect );
    	mysql_options( Connection, MYSQL_SET_CHARSET_NAME, "utf8");
    
    	if( !( mysql_real_connect( Connection, m_Server.c_str( ), m_User.c_str( ), m_Password.c_str( ), m_Database.c_str( ), m_Port, NULL, 0 ) ) )
    
    И с базы данных будет читать русские символы.
    P.S.: Не проверял сказывается ли на игре.
    P.P.S.: По умолчанию там кодировка соединения latin1, если не ошибаюсь.
    AJlex нравится это.