Foros del Web » Programacin para mayores de 30 ;) » C/C++ »

SQLite y Unicode

Estas en el tema de SQLite y Unicode en el foro de C/C++ en Foros del Web. Hola, lo primero presentarme soy javi, estudiante de programacion. he estado leyendo por el foro y no he logrador soluiconar mi duda, Tengo programa para ...
  #1 (permalink)  
Antiguo 08/06/2009, 01:43
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigedad: 14 aos, 10 meses
Puntos: 0
SQLite y Unicode

Hola, lo primero presentarme soy javi, estudiante de programacion.
he estado leyendo por el foro y no he logrador soluiconar mi duda,

Tengo programa para una Pda con Wmobile, que lee datos de una SQLite, está en c++ y el proyecto en visual studio 2005.

el problema es el siguiente al leer un dato de la SQLite me devuelve una cadena con caracteres estraños donde deberian ir acentos o eñes por ejemplo

"Enrique Suero Garzón" estas cadenas son char * y me gustarian que siguieran siendolo o CStrings tras la transformacion, pero necesito pasar esos caracteres a UNICODE pero no lo logro, se que están en UTF8 o eso creo.

gracias, de antemano y os aviso que soy muy torpe con el c++ por lo que si resuelven esto que sea como par un niño de de 5 años, gracias de nuevo,

ltima edicin por chikymb; 09/06/2009 a las 06:28 Razn: SOLUCIONADO
  #2 (permalink)  
Antiguo 09/06/2009, 06:28
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigedad: 14 aos, 10 meses
Puntos: 0
Respuesta: SQLite y Unicode

Buenas he solucinado el problema de una forma un tanto bruta, pero en fin al no ser muchos datos funiciona.

He escrito dos funciones, una que pasa los caracteres extraos a etc y otra que pasa los acentos a cartacteres extraos para hacer comparaciones con la BD

al parecer los caracteres con acentos los dibide en en 2 char, y el primero siempre es as que me ayudo de esto para hacer las comprobaciones.

// Á á É é Í * Ó ó Ú ú Ñ ñ Ü ü
//
char * CUtilString::ConvertStringToCharUnicode(CString strString)
{
char *cadena;

cadena = (char *)malloc(strString.GetLength()*sizeof(char)+1);
int i = 0, z = 0;
for( i = 0; i < strString.GetLength();i++)
{
if ((char)strString.GetAt(i) == ''){
i++;
if ((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '*')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
else if((char)strString.GetAt(i) == '')
cadena[z] = '';
}
else
cadena[z] = (char)strString.GetAt(i);

z++;
}
cadena[z] = NULL;

return cadena;
}

//Á á É é Í * Ó ó Ú ú Ñ ñ Ü ü
//
char * CUtilString::ConvertStringToUTF8Char(CString strString)
{
char *cadena;

cadena = (char *)malloc(strString.GetLength()*sizeof(char)+1);
int i = 0, z = 0;
for( i = 0; i < strString.GetLength();i++)
{
if ((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '*';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else if((char)strString.GetAt(i) == ''){
cadena[z] = '';
z++;
cadena[z] = '';
}
else
cadena[z] = (char)strString.GetAt(i);

z++;
}
cadena[z] = NULL;

return cadena;
}
Atencin: Ests leyendo un tema que no tiene actividad desde hace ms de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.