¿La base de datos Sqlite admite la codificación persa / árabe?

Trabajo con la base de datos Sqlite en C # y tengo esta pregunta: ¿La base de datos Sqlite admite la codificación persa / árabe? ¡Porque he escrito algunos datos árabes / persas en él y cuando quiero leer datos de la base de datos, se leen en una forma inadecuada!enter image description here

mi código :

int len = ds.Tables["tbl"].Rows.Count;
            int index = rnd.Next(0, len - 1);
            //notifyIcon1.ShowBalloonTip(15, "پیام عشق ", ds.Tables["tbl"].Rows[index][0].ToString(), ToolTipIcon.Info);
            string str = ds.Tables["tbl"].Rows[index][0].ToString();
            MessageBox.Show(str);

Gracias .

siguiente de mi código:

DataSet ds;
ds = SQLite_DB.Select_DB(SQLite_DB.Con_string("data.s3db"), "select * from info");

preguntado el 16 de mayo de 11 a las 17:05

Su código no tiene nada que ver con Sqlite. -

2 Respuestas

Mientras estés usando versión 3 o superior, podrá utilizar UTF-8 / UTF-16, que es su mejor opción para árabe.

contestado el 16 de mayo de 11 a las 21:05

En resumen: no.

SQLite admite solo un número muy, muy limitado de codificaciones: UTF-8 y UTF-16 (múltiples variedades).

Afortunadamente, UTF-8 es perfectamente adecuado para expresar árabe o persa, o cualquier otro idioma (incluido el klingon, si te apetece).

Es posible, por supuesto, que alguna otra parte de su cadena de herramientas esté estropeando la codificación, consulte la documentación para el contenedor C # .net SQLite y su código de Formularios.

contestado el 16 de mayo de 11 a las 21:05

@salar_cpp_cs: revise toda su cadena de herramientas y pruebe la limpieza de UTF-8 en todos los niveles. Verifique que la base de datos esté bien formada, utilizando un ejecutable externo como sqlite3.exe (esto puede tener un nombre diferente en su plataforma); Verifique que sus archivos fuente estén codificados en UTF-8, verifique que se establezcan los indicadores del compilador apropiados, verifique que los archivos auxiliares estén codificados y leídos correctamente, aprenda a usar las utilidades C # l10n e i18n y comprenda algunos de los conceptos básicos de la codificación de caracteres y cómo está diseñado SQLite. Para principiantes. - Williham Totland

Williham tiene razón: debe verificar que la basura no ingrese. Si está usando System.Data.Sqlite, coloque un punto de interrupción en el lugar donde está insertando los datos. Presumiblemente, está haciendo esto a través de un parámetro SqliteCommand. Mire cuál es el valor del parámetro: si eso es basura, entonces está arruinando la codificación. System.Data.Sqlite aceptará una cadena CLR (básicamente, UCS2) y la convertirá a UTF-8 por usted, por lo que siempre que su cadena se vea bien, debería salir correctamente y bien. - Kevin Hsu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.