Изменение кодировки базы данных SQLite в приложении AIR для 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? Или это по какой-то причине плохой идеей?

Ответ 1

Без каких-либо других обходных решений или ответов, я отправляю свое обходное решение в качестве ответа. Он отлично работал в приложении PlayBook за последние два года, поэтому, по-видимому, не имеет непредвиденных побочных эффектов, по крайней мере в этой среде:

Моим обходным решением пока является использование шаблона "template.db", который я создаю раньше времени и связанного с приложением. В этом template.db я установил кодировку в UTF-8 вручную. Если файл базы данных не существует уже при запуске моей программы, я создаю его, скопировав этот шаблон в файл базы данных, а затем перейдите к открытию и используйте его в обычном режиме. Я подтвердил, что данные TEXT затем сохраняются как UTF-8 по желанию.

Ответ 2

вы можете проверить исходный файл проекта, например /bin/debug, в проектах Visual Studio С#.

Измененный код не обязательно выполняется в вашем db, расположенном в других папках.