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

时间:2011-06-20 20:33:13

标签: sqlite encoding utf-8 air

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

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

在向数据库写入任何内容之前的PRAGMA encoding = "UTF-8";语句通常会解决问题,但它也会出现that's not allowed in AIR

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

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

2 个答案:

答案 0 :(得分:1)

没有找到其他解决方法或答案,我将解决方法作为答案发布。它在过去两年的PlayBook应用程序中运行良好,所以可能没有任何不可预见的副作用,至少在那种环境中是这样的:

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

答案 1 :(得分:0)

您可以在C#Visual Studio项目中检查项目的执行源文件,如/ bin / debug。

更改的已提交不一定在位于其他文件夹中的数据库中执行。