将AIR应用程序中的SQLite数据库编码更改为UTF-8

Pet*_*sen 10 air sqlite encoding utf-8

在AIR应用程序中,您可以通过flash.data类使用SQLite.似乎默认情况下,创建的数据库的编码设置为UTF-16le,这意味着文本数据每个字符存储两个字节,导致ASCII数据库内容几乎100%的开销.

假设shell程序(sqlite3)是指示性的,SQLite数据库的默认值是UTF-8.据推测,Adobe出于某种原因决定重写这一点,但如果可能的话,我宁愿不要遭受浪费的存储空间.

PRAGMA encoding = "UTF-8";在向数据库写入任何内容之前的声明通常会解决问题,但似乎AIR中不允许这样做.

我现在的解决方法是使用我提前创建并捆绑到应用程序中的"template.db".在这个template.db中,我手动将编码设置为UTF-8.如果我的程序启动时数据库文件已经不存在,我通过将该模板复制到我的数据库文件来创建它,然后继续打开并正常使用它.我已经确认TEXT数据然后根据需要存储为UTF-8.

我还没有看到任何不良影响,但这是hackish.有没有更好的方法将编码设置为UTF-8?或者出于某种原因这是一个坏主意?

Pet*_*sen 1

由于没有找到其他解决方法或答案,我将我的解决方法作为答案发布。过去两年它在 PlayBook 应用程序中运行良好,因此大概没有不可预见的副作用,至少在该环境中:

我现在的解决方法是使用我提前创建并捆绑到应用程序中的“template.db”。在此 template.db 中,我手动将编码设置为 UTF-8。如果程序启动时数据库文件尚不存在,我会通过将该模板复制到数据库文件来创建它,然后继续正常打开并使用它。我已经确认 TEXT 数据现在根据需要存储为 UTF-8。