Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±

    Бред с кодировкой.

    Приветствую. Появилась огромная проблема, связанная с кодировкой.

    В общем, объясню ситуацию: если заранее добавить в базу данных определённые значения и запустить samp-server.exe, то в самой игре, при выполнении запроса, выводит всё правильно (и русские, и латинские символы).
    А если запустить samp-server.exe и добавить эти же значения в базу данных, а после добавления зайти на сервер, то вместо русских символов выводит непонятно что. После перезапуска всё отображается нормально.

    При запуске мода и, соответственно, MySQL:
    PHP код:
                mysql_set_charset("cp1251_general_ci"mysql);
                
    mysql_tquery(mysql"SET NAMES 'cp1251'""""");
                
    mysql_tquery(mysql"SET CHARACTER SET 'cp1251'"""""); 
    Запрос (переменная очищается перед форматированием):
    PHP код:
    SELECT FROM `accWHERE `nick` = '%s' LIMIT 1 
    Часть функции:
    PHP код:
    new rows;    
    cache_get_row_count(rows);
        if(
    rows)
        {
            
    cache_get_value_name(0, !"info1"info120);
            
    cache_get_value_name(0, !"info2"info230);
    // Ну и тут, соответственно, вывод через format.
        

    - - - Добавлено - - -

    Сразу скажу, что кодировка совпадает с той, что установлена в phpMyAdmin (cp1251_general_ci).

    Может ли это быть из-за того, что я установил немного другой локальный сервер (или как это называется)?

  2. #2
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Посмотрел в логи, увидел это:
    PHP код:
    ERRORerror #2013 while executing query "SELECT * FROM `acc` WHERE `nick` = '%s' LIMIT 1 ": Lost connection to MySQL server during query 
    - - - Добавлено - - -

    Ах, точно, забыл сказать, на какую локалку перешёл. Давно использовал Denwer и решил попробовать что-то новенькое, посоветовали OpenServer. Установил только вчера.
    Последний раз редактировалось PawnoNoob; 27.12.2017 в 00:00.

  3. #3
    Аватар для Kucklovod00
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2017
    Сообщений
    36
    Репутация:
    0 ±
    Используешь mysql_format или просто format? Была у меня проблема с кодировкой при использовании format, поменял на mysql_format и все решилось.

  4. #4
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от Kucklovod00 Посмотреть сообщение
    Используешь mysql_format или просто format? Была у меня проблема с кодировкой при использовании format, поменял на mysql_format и все решилось.
    Использовал и то, и то - эффект одинаковый. На денвере, кстати говоря, такого бреда не было. Неужели это из-за того, что я накатил опенсервер? Просто мне сказали, что он "топ ваще круть", пришлось попробовать (уже позавчера)
    Последний раз редактировалось PawnoNoob; 27.12.2017 в 13:21.

  5. #5
    Аватар для Kucklovod00
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.12.2017
    Сообщений
    36
    Репутация:
    0 ±
     Это
    PHP код:
    mysql_set_charset("cp1251_general_ci"mysql);
    mysql_tquery(mysql"SET NAMES 'cp1251'""""");
    mysql_tquery(mysql"SET CHARACTER SET 'cp1251'"""""); 


     На это
    PHP код:
    mysql_tquery(mysql, !"SET NAMES 'utf8'"""""); 
    mysql_tquery(mysql, !"SET character_set_client = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET character_set_connection = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET character_set_results = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET SESSION collation_connection = 'utf8_general_ci'"""""); 


    Сверь настройки БД в денвере и опенсервере.

  6. #6
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от Kucklovod00 Посмотреть сообщение
     Это
    PHP код:
    mysql_set_charset("cp1251_general_ci"mysql);
    mysql_tquery(mysql"SET NAMES 'cp1251'""""");
    mysql_tquery(mysql"SET CHARACTER SET 'cp1251'"""""); 


     На это
    PHP код:
    mysql_tquery(mysql, !"SET NAMES 'utf8'"""""); 
    mysql_tquery(mysql, !"SET character_set_client = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET character_set_connection = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET character_set_results = 'cp1251'"""""); 
    mysql_tquery(mysql, !"SET SESSION collation_connection = 'utf8_general_ci'"""""); 


    Сверь настройки БД в денвере и опенсервере.
    Зачем мне кодировка utf8, если в самой базе у меня cp1251?

    - - - Добавлено - - -

    Ещё, кстати, прошу прочитать ошибку, которую я обнаружил в логах. Там явно указывает НЕ НА проблему с кодировкой.

  7. #7
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от PawnoNoob Посмотреть сообщение
    Зачем мне кодировка utf8, если в самой базе у меня cp1251? .
    Затем, что в базе должна стоять utf8_general_ci и в таблице, и на всех столбцах
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. #8
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Решил проблему. Оказалось, что проблема была не в моде, а в OpenServer. Можете закрывать.

    Само решение крылось в настройках MySQL. Нужно было изменить пару значений:
    PHP код:
    wait_timeout 60 
    connect_timeout 5 
    Я просто к этим значениям добавил по одному нулю и проблемы как не бывало.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •