В приложении 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? Или это по какой-то причине плохой идеей?