2011-06-20 45 views
10

在AIR應用程序中,您可以通過flash.data類使用SQLite。看起來,默認情況下,創建的數據庫的編碼設置爲UTF-16le,這意味着文本數據每個字符存儲兩個字節,導致ASCII大量數據庫內容接近100%的開銷。將AIR應用程序中的SQLite數據庫編碼更改爲UTF-8

假設shell程序(sqlite3)是指示性的,SQLite數據庫的默認值是UTF-8。據推測,由於某種原因,Adobe已決定重寫此內容,但如果可能的話,我寧願不要浪費存儲空間。

A PRAGMA encoding = "UTF-8";在向數據庫寫入任何內容之前的聲明通常會解決問題,但它也會出現that's not allowed in AIR

我現在的解決方法是使用我提前創建並綁定到應用程序中的「template.db」。在這個template.db中,我手動將編碼設置爲UTF-8。如果數據庫文件在我的程序啓動時不存在,我通過將該模板複製到我的數據庫文件來創建它,然後繼續打開並正常使用它。根據需要,我已經確認TEXT數據存儲爲UTF-8。

我還沒有看到任何不良影響,但這是hackish。有沒有更好的方法將編碼設置爲UTF-8?或者出於某種原因它是一個糟糕的想法?

+0

不要以爲你找到了這個問題的答案?我現在在同一條船上。 – fizban

+1

除了我的解決方法之外,沒有。它工作得很好,但它用於生產代碼。 –

+1

我建議您將您的解決方法添加爲答案,然後接受它。 –

回答

1

沒有其他解決辦法或找到答案,我將我的解決方法發佈爲答案。在過去的兩年裏,它在PlayBook應用程序中運行良好,因此推測至少在該環境中沒有無法預料的副作用:

我現在的解決方法是使用我創建的「template.db」的時間並捆綁到應用程序中。在這個template.db中,我手動將編碼設置爲UTF-8。如果數據庫文件在我的程序啓動時不存在,我通過將該模板複製到我的數據庫文件來創建它,然後繼續打開並正常使用它。我已經確認,TEXT數據現在按照需要存儲爲UTF-8。

0

您可以在C#Visual Studio項目中檢查項目的執行源文件,例如/ bin/debug。

更改的提交不一定會在位於其他文件夾中的數據庫中執行。

相關問題