Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Еще при подготовке к харьковскому мероприятию в рамках Мирового тура RAD Studio XE5 я столкнулся с небольшой проблемой в работе с SQLite с помощью FireDAC. Если заполненную в Windows приложении базу перенести вместе с приложением на Android, кириллические строки в базе перестают читаться (вместо букв отображаются знаки вопроса). Однако, если заполнять базу непосредственно на мобильном устройстве, русские символы считываются вполне корректно. Данные из базы заполненной в стороннем приложении, или в Delphi приложении, использующем другие компоненты доступа к данным, так же отображались нормально. Слету найти решения не удалось, и мне пришлось процитировать известного украинского футбольного специалиста: “Будем разбираться!”

В отличие от последнего, разобраться с описанной проблемой мне удалось. По умолчанию при подключении к SQLite в FireDAC используется формат строк ANSI.

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

 


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

3 комментария: FireDAC и SQLite. Проблема кодировки.

  • Во многих СУБД про кодировку строк нужно помнить ещё перед установкой самой СУБД.
    Кстати это вот один из злейших недостатков датасетов – если в дизайнере насоздавать поля, а потом в БД чего-то поменять, то синхронизировать это с исходником… мягко говоря неудобно.

    Меня вот удивляет, почему ещё никто не предлагает (пусть даже платных) решений-альтернатив датасетов? Или они есть, но малоизвестны, потому-что все привыкли к датасетам?

  • По-моему это нормально. Не нормально, что FireDAC разрешает ANSI, а знаки вопроса, в связи с этим, нормально. Sqlite’овская библиотека имеет два типа функций unicode(32) и utf8, и, если вам другая библиотека засовывает(извините) туда данные без преобразований, то, как говорится: “что вы от нас хотите”.

    • Нет, нормально. И то, что разрешает ANSI, возможно, тоже нормально. Плохо что ANSI по умолчанию, и если не знаком с FireDAC, то уже нужно думать, что и где поменять.

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика