В приложении AIR вы можете использовать SQLite через классы flash.data.Похоже, что по умолчанию кодировка созданной базы данных установлена в UTF-16le, что означает, что текстовые данные хранятся с двумя байтами на символ, что приводит к почти 100% накладным расходам для содержимого базы данных с интенсивным ASCII.
По умолчанию для базы данных SQLite используется UTF-8, при условии, что программа оболочки (sqlite3) является ориентировочной.Предположительно Adobe решила переопределить это по какой-то причине, но я бы предпочел не потерять потраченное пространство памяти, если это возможно.
A PRAGMA encoding = "UTF-8";
заявление перед записью чего-либо в базу данных обычно решает проблему,но, похоже, , что также не разрешено в AIR .
В настоящее время мой обходной путь - использовать "template.db", который я создаю заранее и встраиваю в приложение.В этом template.db я установил кодировку UTF-8 вручную.Если файл базы данных еще не существует при запуске моей программы, я создаю его, скопировав этот шаблон в файл базы данных, затем продолжаю открывать и использовать его как обычно.Я подтвердил, что данные TEXT затем сохраняются как UTF-8, как нужно.
Я еще не видел никаких побочных эффектов, но это хакерство.Есть ли лучший способ установить кодировку UTF-8?Или это плохая идея по какой-то причине?