Выгрузка русских символов из базы даных Sqlite
#1

При выгрузке русских символов из SQLite! получаю какую-то белиберду.
Например: слово <Тест> выгружается как <Тест>, и длина строки 32, а не 4
при этом слово <Тest> выгружается корректно.
Помогите, как можно исправить даный "баг".

pawn Code:
new DB:Database = db_open( "database.db" );
if( Database )
{
    new Query[ 128 ], new info[3][128],
        DBResult:Result;
        Query="SELECT * FROM `radio_main`" ;
       
        Result = db_query( Database, Query );
        for(new a;a<db_num_rows(Result);a++)
        {
           
            db_get_field_assoc(Result, "id", info[0], 10);
            db_get_field_assoc(Result, "country", info[1], 127);
            printf("%s,         длина:%d, %c-%c-%c-%c", info[1], strlen(info[1]), info[1][0],info[1][1],info[1][2],info[1][3]);
            db_get_field_assoc(Result, "type", info[2], 10);
            format( _128_strings, sizeof(_128_strings)-1, "%s) %s \n", info[0],info[1] );
            strcat(list, _128_strings);
            db_next_row(Result);
        }
        db_free_result( Result );
}
Reply
#2

Устанавливать правильную кодировку запросам.
Reply
#3

А по конкретнее можно, какую кодировку и где/как точно её использовать?
Если я не ошибаюсь их 4? UTF-8, UTF-16, UTF-16le и UTF-16be
Заметь, я отписался здесь не после того как у меня не получилось после 1 раза выгрузить русские символы,
я 3-дня искал на форумах (здесь тоже, видел твою запись что-то про "UTF8_general_ci"), экспериментировал и результат был ничтожный, ничто не помогало.
Надеюсь ты не про кодировки в "MySql", мы говорим про "SQLite в сампе".
Может скинешь один запрос, который выгружает русские символы корректно?!
Reply
#4

  1. Ту в которой твои записи. А как и какую лучше ищи в интернете. Да и странный вопрос "как?", ты же как-то таблицы создал, а кодировка у них задается при создании.
  2. В SQL их как минимум 126.
  3. Заметь я не про кодировку в целом написал, а про кодировку запросов.
PS MySQL использует синтаксис языка SQL.
Reply
#5

Кодировка у меня в UTF-8! Кодировка базы устанавливается 1 раз и только при
создание базы даных http://www.sqlite.org/pragma.html#PRAGMA%20encoding или я что-то не так понел?!
И ещё другой вопрос, тебе что трудно скинуть один запрос, как использовать кодировку та что работает?!
А так, я даже "умствено представил правильную кодировку в запросах" и на моё удивление, это тоже не помогло! Как быть?
Reply
#6

Quote:
Originally Posted by PDA
View Post
Кодировка у меня в UTF-8! Кодировка базы устанавливается 1 раз и только при
создание базы даных http://www.sqlite.org/pragma.html#PRAGMA%20encoding или я что-то не так понел?!
И ещё другой вопрос, тебе что трудно скинуть один запрос, как использовать кодировку та что работает?!
А так, я даже "умствено представил правильную кодировку в запросах" и на моё удивление, это тоже не помогло! Как быть?
У ДБ есть кодировка базы данных, таблиц и каждого поля в отдельности!
Я просто люблю когда люди находят решение самостоятельно, они так лучше запоминают!
А дать готовое решение это легко: сразу после подключения к БД
PHP Code:
SET NAMES utf8;
SET SESSION character_set_server=utf8
Хотя я более чем уверен что у тебя проблема с кодировкой внутри БД.
Reply
#7

Quote:
Originally Posted by Stepashka
View Post
Я просто люблю когда люди находят решение самостоятельно, они так лучше запоминают!
Сам никто никогда "из воздуха" не найдёт решение самостоятельно, тобишь нужно читать мануелы, на форумах, поисковики и т.д., и я всё это уже оставил посзади, к моему сожалению без результатно.
(А вообщем, я так понял, если я к тебе прийду и попрошу чтоб ты меня научил плавать, то уверен, ты меня вывезешь на море и выкинешь туда, кто то учится так плавать... но я знаю случаи где результат был плачевный ! (Ну да ладно, мы не здесь не о плавание))

SET NAMES utf8;
Знакомо, уже тоже прописывал, не помаголо, попробую ещё раз...

SET SESSION character_set_server=utf8;
в 1 раз вижу, не встречал..

Итог:
Всё по прежнему, абсолютно без изменений

Вызывал, после таго как открыл базу даных..

Что это может быть
Stepashka Вопрос: У тебя на 100% работает руские символы в сампе через SQLite
Reply
#8

Quote:
Originally Posted by PDA
View Post
Сам никто никогда "из воздуха" не найдёт решение самостоятельно, тобишь нужно читать мануелы, на форумах, поисковики и т.д.
Скажи это таким людям как Кен То́мпсон и Де́ннис Макалистэйр Ри́тчи!

Quote:
Originally Posted by PDA
View Post
Сам никто никогда "из воздуха" не найдёт решение самостоятельно, тобишь нужно читать мануелы, на форумах, поисковики и т.д., и я всё это уже оставил посзади, к моему сожалению без результатно.
Видимо это причина, может стоит попробовать с начало, но только не открывать сразу специализированные книги, а начать с основ?
Quote:
Originally Posted by PDA
View Post
Что это может быть
Stepashka Вопрос: У тебя на 100% работает руские символы в сампе через SQLite
Это неправильная кодировка.
Я не использую в sa-mp SQLite, но да у меня все работало когда я с ним баловался.
Reply
#9

У меня ни разу проблем не было с русскими символами. Названия бизнесов корректно сохранялись и загружались, причины банов тоже, а самое главное - русские ники игроков. На моём сервере можно играть с русскими никами, так вот, эти игроки не испытывали никаких проблем со слётом аккаунтов и тому подобное. Танцев с бубном я тоже не делал. Хм, может потому, что сервера на винде у меня...
Reply
#10

Quote:
Originally Posted by EvgeN 1137
View Post
У меня ни разу проблем не было с русскими символами. Названия бизнесов корректно сохранялись и загружались..
EvgeN1137, это ты всё проделывал через встроеный в сампе SQLite!? а не Mysql?
И да, ту же базу даных я выгружаю через PHP, без проблем, всё отображается нормально.

Тестирую я тоже на винде7.
Reply
#11

Quote:
Originally Posted by Stepashka
View Post
1) Я просто люблю когда люди находят решение самостоятельно, они так лучше запоминают!
2) Скажи это таким людям как Кен То́мпсон и Де́ннис Макалистэйр Ри́тчи!
Sztepashka, я давно уже улавливаю твои "намёки", вопрос, читаешь ли ты мои сообщения?
Я написал, я уже более чем 3 дня бьюсь с этой кодировкой, без результата, не могу выгрузить русские символы и баста, поэтому решил попросить помощи на этом форуме!
Следущее я пишу в первый раз, чтоб ты теперь знал и не думал, что я новичек и в сампе 2 месяц. Я игрок с 2006, писал сам свой скрипт с ~2008, работаю с базами данных где-то с начала 2009 года
разумеется навык в области 'SQL' есть. НО только недавно столкнулся с русскими буквами, да в сампе и да через SQLite.

А теперь представь следующую ситуацию, да, не просто читай этот текст а представь следующее..
> Ты хочешь построить дом, обращаешься ко мне, как строителю, помочь тебе.
> Я соглашаюсь.
> Приезжаю к тебе, даю тебе в руки: кирпич, мешок цемента и песка, ведро с водой.
> И говорю, вот, строоим дом и добавляю: "Люблю когда люди сами строят самостоятельно, а строить за тебя, это слишком просто, так ты ничему в жизне не научишся"!

И как тебе такой ответ строителя? И пожалуйста не надо сейчас, типа: "Я соглашусь и начну строить дом сам, я больше чем у верен ты не в детском возрасте."

Просто надеелся здесь на полезные советы, что поможет мне решить проблему,
а мне: (изменю немного текст)
" Мы знаем решение, но любим смотреть как другие мучаются вахахахаха, он тупой а мы типа умные хахаха мы знаем, а он нет вахаха.."

И тем самым мне постояно нужно вытягивать каждое слово.

Итог:
У тебе Stepashka, есть возможность по быстромy протестить мою проблему? Я бы мог скинуть мою тестовую базу даных и мои накидки скрипта, что бы ты сам увидел, что не работает кодировка или что-там не работает.
А говорить мне что проблема в кодировке, то я это уже давно понел.
Ещё раз, мне не нужно говорить что у меня за проблема, мне нужно решение проблемы.

ПС: не обижайся, если и обидел где, просто уже можно было создать автомобиль, но нет, давайте сначало создадим колесо?!

Quote:
Originally Posted by Stepashka
View Post
Видимо это причина, может стоит попробовать с начало, но только не открывать сразу специализированные книги, а начать с основ?
Это неправильная кодировка.
Я понел, читай ввыше.^^

Quote:
Originally Posted by Stepashka
View Post
Видимо это причина, может стоит попробовать с начало, но только не открывать сразу специализированные книги, а начать с основ?
Никак нету времени на создание своего нового языка программирование, извиняй
Reply
#12

Мы с отцом и мужем моей сестры уже построили баню, дом ставить будем в этом году, строителей не привлекали, только книгу совесткого периода "Как построить баню." и поисковую систему яндекса. Получиось офигенная баня, если не веришь могу фотки показать. Так что пример у тебя неудачен.
Quote:
Originally Posted by PDA
View Post
работаю с базами данных где-то с начала 2009 года
разумеется навык в области 'SQL' есть. НО только недавно столкнулся с русскими буквами, да в сампе и да через SQLite.
русские буквы ничем не отличаются от всех остальных, а из тобой сказанного я понял только то что ты с БД не работал, а так поверхностно знаком и тупо пользовался ей.

Я дал тебе уже туевую кучу полезного:
Проверить кодировку таблиц и полей в твоей БД.
Проверить в какой кодировке ты туда пишешь данные и совпадает ли она с той в которой ты их читаешь.
Не использовать SQLite если не можешь. Удивительно но тоже решение!

PS:
Ни я, ни кто на этом форуме твоих работ не видел и то что ты там играешь с 2006 года и пишешь с 2008 тут всем глубоко наплевать, так что ты тут просто новичок пока не докажешь обратное.
А если учесть что ты абсолютно отвергаешь предложения пойти да изучить больше по сфере в которой ты не осведомлен, то я скажу прямо, тебе нечего делать в программировании. Вернись в группу игроков и не напрягай свой ленивый мозг.
Мне ни твоя БД ни твой код на фиг не нужен, у меня своего хватает и разбираться в чужом я не собираюсь, а тем более делать кому-то что-то готовое. Хочешь стать умнее найди решение сам, подсказки где копать тебе дали, дерзай.
Reply
#13

Quote:

EvgeN1137, это ты всё проделывал через встроеный в сампе SQLite!?

да. Я как раз во время разработки думал, что вдруг не попрут русские символы в SQLite. Но без проблем попёрли. Например. Создаю таблицу так:
pawn Code:
db_query(agDB,"CREATE TABLE banlist (Nick VARCHAR, IP VARCHAR, Reason VARCHAR, Adm VARCHAR, Date VARCHAR)");
Пихаю текст так:
pawn Code:
format(qq,sizeof(qq),"INSERT INTO banlist (Nick, IP, Reason, Adm, Date) VALUES ('%s','%s','%s','%s','%s')", PlayerName(giveplayerid), ip, message, PlayerName(playerid), time);
db_query(agDB,qq);
Достаю так (пример взял из другой таблицы):
pawn Code:
format(qq,sizeof(qq),"SELECT * FROM bizinfo WHERE id = %d LIMIT 1",i);
Result = db_query(agDB,qq);
db_get_field_assoc(Result,"name",bData[i][Name],MAX_BUSINESS_NAME);
И проблем нет
Reply
#14

Попробуй поставить кодировку cp1251_bin
Reply
#15

Quote:
Originally Posted by JM_Millers
View Post
Попробуй поставить кодировку cp1251_bin
Изыди и не упоминай больше эту кодировку в суи
Reply
#16

Знакомые все лица. Stepashka, не знаешь - не путай остальных.
Ну-ка скажи, чем тебе cp1251 не угодил.
Reply
#17

Quote:
Originally Posted by therainycat
View Post
Знакомые все лица. Stepashka, не знаешь - не путай остальных.
Ну-ка скажи, чем тебе cp1251 не угодил.
Тем, что это прошлый век.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)