|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
здраствуйте, нужна ваша помощь. Код на С++ в проект подключено sqlite3.h sqlite3.lib, все что необходимо. Добавление записей в базу происходит через консоль (файл sqlite3.exe). В некоторых столбцах записей имеются русские символы. Подключение и получение записей происходит из кода проекта, все извлекается успешно, только вместо русских символов получаются следующие: ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 01:17 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
В чем может быть проблема? http://rghost.ru/7WckrntLr.view ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 01:21 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
Проблема в кодировке естественно. У тебя консоль в CP866, а клиент рисует в CP1251. Проще всего: добавляй данные из клиента и не трогай консоль. Чуть сложнее - смени кодировку консоли. Гугли команду mode con cp. Более сложно, но потенциально более универсально - переходи на юникод, подключай ICU, и будет щастье.... Но это года через два-три. И реально нужно только если в базе больше двух языков одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 03:01 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
но ведь я добавлял не только через консоль, добавлял также и через navicat, там русские символы отображались, однако при извлечении из программы опять непонятные символы были. может дело в извлечении? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 10:24 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
Ucaliно ведь я добавлял не только через консоль, добавлял также и через navicat, там русские символы отображались, однако при извлечении из программы опять непонятные символы были. может дело в извлечении?А navicat работает с юникодом. А твоя программа в CP1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2016, 21:24 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
теперь понял, благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 07:59 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
Запутался. 1. SQLite поддерживает Unicode? Т.е русскую символику он может хранить? 2. Если он может хранить Unicode то почему тогда клиентские программы извлекают из DB непонятные символы, т.е выходит что клиент не поддерживает Unicode и из-за этого извлекает некорректно символику? Тобой было указано что нужно использоваться ICU, для корректного отображение русской символики в клиенте. А если к примеру используется mysql connector C++? Можно ли обойтись без ICU? Имею в виду может в mysql connector C++ уже что-то вроде ICU имеется, и с помощью его API функций возвращается корректная символика. Или для connector C++ тоже необходим ICU? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 14:34 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
Ucali1. SQLite поддерживает Unicode?Нет. SQLite это база данных. Ей без разницы какие там данные в таблице. Специальная поддержка юникода не входит в область задач СУБД. С точки зрения SQLite есть текстовые поля и не текстовые. Как именно закодирован текст в текстовом поле для SQLite совершенно не важно. Ucali Т.е русскую символику он может хранить?Русская символика, это русский флаг, герб, гимн, матрешки, балалайки, медведи с водкой. Все то что намекает "это Россия". А русскоязычные тексты пишутся кириллическим алфавитом. Ucali2. Если он может хранить Unicode то почему тогда клиентские программы извлекают из DB непонятные символы,Потому что клиент должен знать как превратить набор нулей и единичек обозначенных как "текст" в набор индексов для визуального контрола использующего шрифт. Ucali т.е выходит что клиент не поддерживает Unicode и из-за этого извлекает некорректно символику?Не обязательно. Клиент может поддерживать, но сам текст может изначально быть в не-юникодной кодировке. UcaliТобой было указано что нужно использоваться ICU, для корректного отображение русской символики в клиенте.Нет, я такого не говорил. ICU к отображению текста не относится совершенно никак. ICU может помочь в запросах к базе, но и только. В общем, сейчас тебе туда лезть совершенно не стоит. Подожди годика три-пять. Станешь мастером в С (не С++), тогда вернешься к ICU. Сейчас ты только запутаешься. UcaliА если к примеру используется mysql connector C++?А при чем здесь mysql? MySQL это одна СУБД, SQLite это совершенно другая СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 17:44 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
Не правильно задал вопрос (про mysql). Удалось получить вывод русскоязычного текста путем добавления и извлечения данных в самой клиентской программе. Если добавление происходит через консоль, клиент отображает кириллицу некорректно. А имеются какие нибудь API для исправления этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 18:05 |
|
SQLite3 Русские символы
|
|||
---|---|---|---|
#18+
UcaliУдалось получить вывод русскоязычного текста путем добавления и извлечения данных в самой клиентской программе.По хорошему, на этом и надо остановиться. Если твой клиент может загружать данные, зачем тебе консоль? UcaliА имеются какие нибудь API для исправления этого?Конечно имеются. В частности уже упоминавшийся ICU, но в нем есть и еще много разного. А тебе хватит любой функции типа 866<->1251. Просто погугли "convert 866 to 1251" и получишь сотни ссылок. Найди себе понятный пример и сделай аналог в своем клиенте (потому что в консоль ты его встроить не можешь). Потом останется только не забыть где строки загруженные через консоль (866) а где строки загруженные клиентом (1251). Аналогично можешь поискать конвертацию в/из юникода и своей любимой кодировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2016, 23:27 |
|
|
start [/forum/topic.php?fid=54&msg=39146007&tid=2008629]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 144ms |
0 / 0 |