在AIR应用程序中,您可以通过flash.data类使用SQLite。默认情况下,创建的数据库编码设置为UTF-16le,这意味着文本数据以每个字符两个字节的形式存储,导致ASCII-heavy数据库内容几乎增加了100%的开销。
SQLite数据库的默认值是UTF-8,假设shell程序(sqlite3)是指示性的。Adobe可能出于某种原因决定覆盖此设置,但如果可能的话,我宁愿不浪费存储空间。
在向数据库写入任何内容之前使用
目前我的解决方法是使用预先创建并打包到应用程序中的“template.db”。在此template.db中,我手动将编码设置为UTF-8。如果在程序启动时数据库文件不存在,则通过将该模板复制到我的数据库文件来创建它,然后继续正常打开和使用它。我已确认TEXT数据以所需的UTF-8格式存储。
我还没有看到任何负面影响,但这是一种hackish的方法。有没有更好的方法来设置编码为UTF-8?或者由于某种原因这是一个坏主意?
SQLite数据库的默认值是UTF-8,假设shell程序(sqlite3)是指示性的。Adobe可能出于某种原因决定覆盖此设置,但如果可能的话,我宁愿不浪费存储空间。
在向数据库写入任何内容之前使用
PRAGMA encoding = "UTF-8";
语句通常可以解决此问题,但似乎在AIR中不允许这样做。目前我的解决方法是使用预先创建并打包到应用程序中的“template.db”。在此template.db中,我手动将编码设置为UTF-8。如果在程序启动时数据库文件不存在,则通过将该模板复制到我的数据库文件来创建它,然后继续正常打开和使用它。我已确认TEXT数据以所需的UTF-8格式存储。
我还没有看到任何负面影响,但这是一种hackish的方法。有没有更好的方法来设置编码为UTF-8?或者由于某种原因这是一个坏主意?