5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Русские символы при записи sqlite. Windows OS14.11.2015, 23:10. Показов 11279. Ответов 16
Метки нет (Все метки)
Доброй ночи! Тема кодировок облизана от и до.... но всё это было бы смешно, когда бы не было так грустно.
При записи в БД использую русские смиволы:
Ладно, в sqliteadmin`е вручную заполним таблицу "person" русскими персонажами (скриншот). После чего запускаем данный код:
Пробовал в метод совать вот это:
0
|
14.11.2015, 23:10 | |
Ответы с готовыми решениями:
16
Русские символы в Windows Vista (Кодировка) Русские символы в GTK приложениях под Windows Не воспринимает русские символы при комментировании Не показывает русские символы при GET запросе |
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
|
|
14.11.2015, 23:46 | 2 |
да все потому, что это сраная винда. В линупсе все замечательно. я проблему русских букв так и не решил. Да и после пары неудачных ссылок в гугле забил на эту идею. PS: проблема с кодировками не только в sqlite
0
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|
15.11.2015, 07:35 [ТС] | 3 |
Мотороллер, я решил проблему в другом проекте на уровне интерфейса. Жестко прописал в main кодировку 1251. Русские пути работают, русский текст при записи работает. Но на чтение вылазит Хрень. Беда в том что мне нужно будет потом собирать проект под osx. Поэтому я не могу использовать 1251.
0
|
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
|
|
15.11.2015, 09:18 | 4 |
[Maxfashko[/nick], могу посоветовать разрабатывать под линупсом или OS X, а потом под виндой придумать какой-нибудь костыль.
0
|
Ушел с форума
|
|
15.11.2015, 10:58 | 5 |
Угу, угу, и Билл Гейтс лично.
Используй Unicode (UTF-8/UTF-16) и будет счастье с SQLite. Проблема не в кодировках, а в том, что несмотря на 21-ый век на дворе, программисты упорно тащат CP1251, ISO-8859, OEM-866 и прочий архаизм в современные программы, когда давно пора забыть про них и использовать только Unicode. И естественно, оно потом "не работает". P.S. У меня SQLite работает с кириллицей на любых Windows, включая нелокализованные и всякое старье типа Win98/Win2K.
0
|
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
|
|
15.11.2015, 11:30 | 6 |
Убежденный, ну вот смотри, вроде пишешь в utf-8, все вроде хорошо, а вот с контрола читаешь инфу (из текстового поля) - и там уже херня.
0
|
Ушел с форума
|
|
15.11.2015, 11:39 | 7 |
А ты уверен, что это проблема SQLite, а не контрола
(или кодировки, на которую настроен вывод в этом контроле) ? Если в базе SQLite лежит UTF-8, а приложение использует дефолтную кодовую страницу типа CP-1251, то понятно, что там будут кракозябры.
0
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|
15.11.2015, 12:15 [ТС] | 8 |
Убежденный,
Я ведь в свойствах проекта поставил utf-8. Что еще необходимо сделать?
0
|
435 / 246 / 43
Регистрация: 05.08.2013
Сообщений: 1,670
|
|
15.11.2015, 13:03 | 9 |
Убежденный, я и говорю - это все винда. тут не в базе проблемы.
0
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|
15.11.2015, 13:05 [ТС] | 10 |
Мотороллер, Ладно бы utf-8 только. cp1251 тоже не помогает. Русский текст при этой кодировке тоже не отображается не пишется адекватно.
0
|
Ушел с форума
|
|
15.11.2015, 18:01 | 11 |
Прежде всего, нужно разобраться с тем, на каком этапе появляются кракозябры.
Например, пусть у тебя исходная строка в UTF-8, и в базу она пишется в UTF-8, и читается она тоже в UTF-8, но вот приложение, которое ее читает, не умеет работать с Unicode и использует дефолтную кодовую страницу системы или консоли. Русские шрифты в консоли - это вообще отдельная большая и больная тема, которая не имеет универсального решения. Конечно же, здесь будут кракозябры. А может быть, вообще все работает как надо, а панику развели почем зря. Вот эта строка, кстати - "Вася Р˜РІР°РЅРѕРІ" - очень смахивает на UTF-8, когда его пытаются читать "не через нужное место". Короче, первым делом сделать двоичный дамп SQLite и проверить, что текст в кириллице там лежит действительно в UTF-8. Например, "Привет!" в байтовом представлении будет таким: 0xEF 0xBB 0xBF 0xD0 0x9F 0xD1 0x80 0xD0 0xB8 0xD0 0xB2 0xD0 0xB5 0xD1 0x82 0x21 Но есть и другой путь - обвинить во всем Windows и забить.
1
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|||||||||||||||||||||
16.11.2015, 20:13 [ТС] | 13 | ||||||||||||||||||||
Убежденный, Делаю так:
Заполняю таблицу русскими символами
Попробуем по-другому:
И как теперь прочитать записанное?
0
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|
17.11.2015, 06:24 [ТС] | 15 |
Dmitriy_M, может я чего не понимаю? Зачем мне порядок, если мне пока просто необходимо вывести содержимое таблицы?
0
|
Ушел с форума
|
|
17.11.2015, 08:48 | 16 |
Сообщение было отмечено Maxfashko как решение
Решение
Ок.
Уверен, что проблема именно здесь, т.е. в выводе текста. Я бы гуглил по ключевым словам "qDebug + UTF-8". Да и для вывода UTF-8 в консоль в любом случае нужны особые "приседания". Опять же, можно вместо qDebug записать прочитанные данные в файл и снова проверить, что там UTF-8, а не что-то другое. И снова идти по цепочке дальше, выясняя, на каком шаге все ломается.
1
|
5 / 5 / 2
Регистрация: 28.11.2012
Сообщений: 165
|
|
17.11.2015, 18:59 [ТС] | 17 |
Убежденный,
Это действительно нужно попробовать.
Добавлено через 30 минут Самое веселое, что вчера сел за mac и билдил проект под clang. Все прекрасно показыват и отображает Добавлено через 8 часов 15 минут Убежденный, Спасибо. Все работает. Действительно была виновата консоль
0
|
17.11.2015, 18:59 | |
17.11.2015, 18:59 | |
Помогаю со студенческими работами здесь
17
Русские символы при импорте из файла. Как на любой версии ОС Windows 10 (ENG / RUS) получить русские символы в консоли ? Русские символы при выводе массива структуры Ноутбук зависает при включении и не видит русские символы Некорректно отображаются русские символы при вводе в консоль CakePHP 2.6.2: при вызове debug русские символы меняются на крякозябры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |