En una aplicación AIR, puede usar SQLite a través de las clases flash.data. Parece que, de manera predeterminada, la codificación de la base de datos creada está configurada en UTF-16le, lo que significa que los datos de texto se almacenan con dos bytes por carácter, lo que genera una sobrecarga de casi 100% para el contenido de la base de datos ASCII.Modificación de la codificación de la base de datos SQLite en la aplicación AIR a UTF-8
El valor predeterminado para una base de datos SQLite es UTF-8, suponiendo que el programa de shell (sqlite3) es indicativo. Presumiblemente Adobe ha decidido anular esto por alguna razón, pero preferiría no sufrir el espacio de almacenamiento desperdiciado si es posible.
Una declaración de PRAGMA encoding = "UTF-8";
antes de escribir algo en la base de datos normalmente resolvería el problema, pero tampoco parece that's not allowed in AIR.
Mi solución alternativa es utilizar un "template.db" que creo de antemano y que se incluye en la aplicación. En esta plantilla.db configuré la codificación en UTF-8 manualmente. Si el archivo de base de datos ya no existe cuando se inicia mi programa, lo creo copiando esa plantilla en mi archivo de base de datos, luego procedo a abrirlo y lo uso normalmente. Confirmé que los datos TEXT se almacenan como UTF-8, según lo deseado.
No he visto ningún efecto negativo todavía, pero esto es hackish. ¿Hay una mejor manera de configurar la codificación en UTF-8? ¿O es una mala idea por alguna razón?
¿No cree que ha encontrado una respuesta a esta pregunta? Estoy como en el mismo barco ahora. – fizban
Aparte de mi solución, no. Funcionó bien, sin embargo, y se usa en el código de producción. –
Le sugiero que agregue su solución como respuesta y la acepte. –