Изменение кодировки базы данных SQLite в AIR app в UTF-8

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

10
задан Community 23 May 2017 в 12:10
поделиться