Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite3 Русские символы / 11 сообщений из 11, страница 1 из 1
13.01.2016, 01:17
    #39146007
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
здраствуйте, нужна ваша помощь.
Код на С++ в проект подключено sqlite3.h sqlite3.lib, все что необходимо.
Добавление записей в базу происходит через консоль (файл sqlite3.exe).
В некоторых столбцах записей имеются русские символы.
Подключение и получение записей происходит из кода проекта, все извлекается успешно, только вместо русских символов получаются следующие:
...
Рейтинг: 0 / 0
13.01.2016, 01:21
    #39146009
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
В чем может быть проблема?
http://rghost.ru/7WckrntLr.view
...
Рейтинг: 0 / 0
13.01.2016, 03:01
    #39146014
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Проблема в кодировке естественно.
У тебя консоль в CP866, а клиент рисует в CP1251.
Проще всего: добавляй данные из клиента и не трогай консоль.
Чуть сложнее - смени кодировку консоли. Гугли команду mode con cp.
Более сложно, но потенциально более универсально - переходи на юникод, подключай ICU, и будет щастье.... Но это года через два-три. И реально нужно только если в базе больше двух языков одновременно.
...
Рейтинг: 0 / 0
13.01.2016, 10:24
    #39146131
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
но ведь я добавлял не только через консоль, добавлял также и через navicat, там русские символы отображались, однако при извлечении из программы опять непонятные символы были. может дело в извлечении?
...
Рейтинг: 0 / 0
13.01.2016, 21:24
    #39146792
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Ucaliно ведь я добавлял не только через консоль, добавлял также и через navicat, там русские символы отображались, однако при извлечении из программы опять непонятные символы были. может дело в извлечении?А navicat работает с юникодом. А твоя программа в CP1251.
...
Рейтинг: 0 / 0
14.01.2016, 07:59
    #39146934
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
теперь понял, благодарю.
...
Рейтинг: 0 / 0
14.01.2016, 14:34
    #39147356
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Запутался.

1. SQLite поддерживает Unicode? Т.е русскую символику он может хранить?
2. Если он может хранить Unicode то почему тогда клиентские программы извлекают из DB непонятные символы, т.е выходит что клиент не поддерживает Unicode и из-за этого извлекает некорректно символику?
Тобой было указано что нужно использоваться ICU, для корректного отображение русской символики в клиенте.
А если к примеру используется mysql connector C++? Можно ли обойтись без ICU? Имею в виду может в mysql connector C++ уже что-то вроде ICU имеется, и с помощью его API функций возвращается корректная символика. Или для connector C++ тоже необходим ICU?
...
Рейтинг: 0 / 0
14.01.2016, 17:44
    #39147614
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Ucali1. SQLite поддерживает Unicode?Нет.
SQLite это база данных. Ей без разницы какие там данные в таблице. Специальная поддержка юникода не входит в область задач СУБД. С точки зрения SQLite есть текстовые поля и не текстовые. Как именно закодирован текст в текстовом поле для SQLite совершенно не важно.

Ucali Т.е русскую символику он может хранить?Русская символика, это русский флаг, герб, гимн, матрешки, балалайки, медведи с водкой. Все то что намекает "это Россия".
А русскоязычные тексты пишутся кириллическим алфавитом.

Ucali2. Если он может хранить Unicode то почему тогда клиентские программы извлекают из DB непонятные символы,Потому что клиент должен знать как превратить набор нулей и единичек обозначенных как "текст" в набор индексов для визуального контрола использующего шрифт.

Ucali т.е выходит что клиент не поддерживает Unicode и из-за этого извлекает некорректно символику?Не обязательно. Клиент может поддерживать, но сам текст может изначально быть в не-юникодной кодировке.

UcaliТобой было указано что нужно использоваться ICU, для корректного отображение русской символики в клиенте.Нет, я такого не говорил. ICU к отображению текста не относится совершенно никак. ICU может помочь в запросах к базе, но и только.
В общем, сейчас тебе туда лезть совершенно не стоит. Подожди годика три-пять. Станешь мастером в С (не С++), тогда вернешься к ICU. Сейчас ты только запутаешься.

UcaliА если к примеру используется mysql connector C++?А при чем здесь mysql? MySQL это одна СУБД, SQLite это совершенно другая СУБД.
...
Рейтинг: 0 / 0
14.01.2016, 18:05
    #39147628
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Не правильно задал вопрос (про mysql).
Удалось получить вывод русскоязычного текста путем добавления и извлечения данных в самой клиентской программе.
Если добавление происходит через консоль, клиент отображает кириллицу некорректно. А имеются какие нибудь API для исправления этого?
...
Рейтинг: 0 / 0
14.01.2016, 23:27
    #39147811
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
UcaliУдалось получить вывод русскоязычного текста путем добавления и извлечения данных в самой клиентской программе.По хорошему, на этом и надо остановиться. Если твой клиент может загружать данные, зачем тебе консоль?


UcaliА имеются какие нибудь API для исправления этого?Конечно имеются. В частности уже упоминавшийся ICU, но в нем есть и еще много разного.
А тебе хватит любой функции типа 866<->1251. Просто погугли "convert 866 to 1251" и получишь сотни ссылок. Найди себе понятный пример и сделай аналог в своем клиенте (потому что в консоль ты его встроить не можешь). Потом останется только не забыть где строки загруженные через консоль (866) а где строки загруженные клиентом (1251).
Аналогично можешь поискать конвертацию в/из юникода и своей любимой кодировки.
...
Рейтинг: 0 / 0
15.01.2016, 11:37
    #39148074
Ucali
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite3 Русские символы
Теперь все стало понятным. Благодарю.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite3 Русские символы / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]