Проблема с кодировкой в mysql
#1

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

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

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

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

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

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

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'");


?
Reply
#5

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

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

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

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

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

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

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


?
нет.
Reply
#9

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

Quote:

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

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

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

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

Quote:

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

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

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

Записываю в бд вручную.
Вывожу из стандартными методами
Записываю в 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];
Reply
#15

  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 одна строка.
Reply
#16

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

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

Quote:

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

Reply
#18

Quote:

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

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

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

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

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)