SA-MP Forums Archive
Проблема с кодировкой в mysql - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблема с кодировкой в mysql (/showthread.php?tid=348002)

Pages: 1 2


Проблема с кодировкой в mysql - Red391 - 03.06.2012

Здравствуйте все желающие помочь
При выводе русских букв из бд - получаю каракули.

Темы на форуме искал (все что нашёл - не помогли)

В бд в таблице в ячейке стоит кодировка utf8

При коннекте 3 запроса выполняю:
Код:
mysql_set_charset("utf8_general_ci");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
Прошу помощи, так как всё, что мог уже испробовал. Заранее благодарен


Re: Проблема с кодировкой в mysql - The_Creator - 03.06.2012

Попробуйте таким образом:
Код:
mysql_set_charset ("cp1251");
mysql_query("SET NAMES 'cp1251'");



Re: Проблема с кодировкой в mysql - Red391 - 03.06.2012

Смена кодировки решит проблему, но это не то что мне нужно.
utf8 обширнее, потому и пытаюсь разобраться с ней.
Всё же, спасибо за помощь.


Re: Проблема с кодировкой в mysql - jhonyxakep - 03.06.2012

Quote:

mysql_set_charset("utf8_general_ci");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

Я а этом не особо шарю, но разве не

mysql_set_charset("utf8");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");


?


Re: Проблема с кодировкой в mysql - Red391 - 04.06.2012

К сожалению данное исправление тоже не помогло


Re: Проблема с кодировкой в mysql - jhonyxakep - 04.06.2012

mysql_set_charset("utf8_general_ci");
mysql_query("SET NAMES 'utf8_general_ci'");
mysql_query("SET CHARACTER SET 'utf8_general_ci'");

Вы сначала попробуйте перебрать несколько вариантов.


Re: Проблема с кодировкой в mysql - eakwarp - 04.06.2012

А зачем вообще устанавливать кодировку таким образом? У нужного поля уже выставлена нужная кодировка, если очень хочется, можно и на всю бд ее выставить.


Re: Проблема с кодировкой в mysql - Stepashka - 04.06.2012

Главный вопрос: с кодировкой запросов понятно, а вот кодировка бд в utf8_general_ci?

Quote:
Originally Posted by jhonyxakep
Посмотреть сообщение
Я а этом не особо шарю, но разве не

mysql_set_charset("utf8");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");


?
нет.


Re: Проблема с кодировкой в mysql - Red391 - 04.06.2012

Я перебрал несколько вариантов, когда пробовал первый. Ни utf8, не utf8_general_ci не помогают.

Quote:

а вот кодировка бд в utf8_general_ci?

Да, именно в utf8_general_ci, вся бд, и всё ячейки и столбцы.


Re: Проблема с кодировкой в mysql - Red391 - 04.06.2012

Кто нибудь знает - как решить эту проблему?
С кодировкой запроса и с кодировкой бд всё в порядке.
Что ещё может влиять?


Re: Проблема с кодировкой в mysql - eakwarp - 04.06.2012

Quote:
Originally Posted by Red391
Посмотреть сообщение
Кто нибудь знает - как решить эту проблему?
С кодировкой запроса и с кодировкой бд всё в порядке.
Что ещё может влиять?
Лучший вариант, ограничится теми данными, что установлены на таблице и на бд, и не использовать вышеприведенных функций и запросов вовсе.


Re: Проблема с кодировкой в mysql - Red391 - 04.06.2012

Quote:

и не использовать вышеприведенных функций и запросов вовсе.

Отказ от запросов - не помог, всё те же не русские буквы при выводе.


Re: Проблема с кодировкой в mysql - eakwarp - 04.06.2012

Quote:
Originally Posted by Red391
Посмотреть сообщение
Отказ от запросов - не помог, всё те же не русские буквы при выводе.
Покажите как выводите, и как записываете.


Re: Проблема с кодировкой в mysql - Red391 - 04.06.2012

Записываю в бд вручную.
Вывожу из стандартными методами
Записываю в enum данные из ячейки.
Вывожу - из enum'a

Код:
stock Load()
{
        new query[100];
        mysql_query("SELECT * FROM `TableName`");
        mysql_store_result();
        if(mysql_num_rows() > 0)
	{
		for(new idx = 1; idx <= mysql_num_rows(); idx++)
		{
                        mysql_fetch_row(query);
        	        sscanf(query, "p<|>s[32]", GetMassiv[Name]);
                }
        }
        mysql_free_result();
        return 1;
} //Это сток вывода и записи в enum из бд mysql
Вывод из enum'a произвожу к примеру:
Код:
SendClientMessage(playerid,0xFFFFFFAA,"Вывод из бд русских букв: %s",GetMassiv[Name]);
Сам enum:
Код:
enum enumMassiv
{
	GetMassiv[Name]
};
new GetMassiv[enumMassiv];



Re: Проблема с кодировкой в mysql - Stepashka - 05.06.2012

  1. pawn Код:
    if(mysql_num_rows() > 0)
        {
            for(new idx = 1; idx <= mysql_num_rows(); idx++)
            {
                mysql_fetch_row(query);
                sscanf(query, "p<|>s[32]", GetMassiv[Name]);
            }
        }
    меняем на
    pawn Код:
    while(mysql_fetch_row(query))
        {
            sscanf(query, "p<|>s[32]", GetMassiv[Name]);
        }
  2. В enum вы ничего не записываете и не выводите, это вообще не ячейка памяти. Кстати он тут вообще не нужен.
  3. Почему по коду у тебя GetMassiv[Name], а в enum маркер имеет имя fName?
  4. Я не вижу смысла в цикле, у тебя в GetMassiv одна строка.



Re: Проблема с кодировкой в mysql - Stepashka - 05.06.2012

Quote:
Originally Posted by Red391
Посмотреть сообщение
Записываю в бд вручную.
Вот отсюда поподробней, через что записываем?
Что показывает эксперимент если записывать из мода?


Re: Проблема с кодировкой в mysql - Crazy_Str - 05.06.2012

попробуй а то тоже сегодня проблема с выводом названия локации в GPS та же беда была это помогло

Quote:

mysql_set_charset("cp1251_general_ci");
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");




Re: Проблема с кодировкой в mysql - Red391 - 05.06.2012

Quote:

Почему по коду у тебя GetMassiv[Name], а в enum маркер имеет имя fName?
Я не вижу смысла в цикле, у тебя в GetMassiv одна строка.

Недосмотрел с fName, это не копированный код(не хотел, чтобы здесь был код на всю страницу), я его упростил вчера, чтобы показать пример того, что есть в моде - потому кое где всё же лажанулся с именами, но принцип ясен.
Цикл имеет смысл, так как там enum на деле не одна строка.
Прости за неточность
Quote:

Вот отсюда поподробней, через что записываем?

Русское слово или два, не превышающих 32 символа, вручную в веб оболочке mysql.
Ну вообще мне из мода собственно и не нужно, но как вернусь - проведу експеримент и отпишусь о результатах.


Re: Проблема с кодировкой в mysql - eakwarp - 05.06.2012

Quote:
Originally Posted by Red391
Посмотреть сообщение
Недосмотрел с fName, это не копированный код(не хотел, чтобы здесь был код на всю страницу), я его упростил вчера, чтобы показать пример того, что есть в моде - потому кое где всё же лажанулся с именами, но принцип ясен.
Цикл имеет смысл, так как там enum на деле не одна строка.
Прости за неточность

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


Re: Проблема с кодировкой в mysql - OKStyle - 05.06.2012

В phpmyadmin надо установить кодировку базы и кодировку сравнений в ту, которая тебе нужна. В основном они разные, поэтому необходимо установить везде одинаковую. Столкнулся с этим при тестировании CMS для сайта...