Изменение кодировки базы данных SQLite в приложении AIR на UTF-8 - PullRequest
10 голосов
/ 21 июня 2011

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

Ответы [ 2 ]

1 голос
/ 29 апреля 2013

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

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

0 голосов
/ 27 ноября 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...