Buenas! A ver, tengo un problemilla que me esta jodiendo bastante y necesito ideas o como cojones resolverlo xD
La situación es la Siguiente. En una Bases de Datos (Enabler de Fujitsu) tengo ciertos objetos que en un determinado campo (Descripcion) tiene un caracter chungo (Vamos, que no lo entiende). Un programa en C se dedica a leer esta información y a escribirla en un fichero, el problema es que en ciertas ocurrencias peta xq no es capaz de leer el caracter.
Programa#GKARRERE#4#KRER - Relaci n de remesas#Cerrado# Lo lee y lo escribe
Programa#GKARREEF#1# No es capaz de leerlo
Si consulto la BBDD con el programa correspondiente en ambos me casos m muestar el mismo caracter (El cuadradito) Si ademas veo ese caracter en hexadecimal a traves del UltraEdit me dice que su codigo es el 1A (El sub, supongo que sera que lo sustituye xq no lo entiende)
Al final la solución que se ha decido es sustitur todos esos caracteres chungos por el espacio en blanco y aquí llega mi problema, he hecho un pequeño java que lee la cadena de la descripcion y por cada caracter me muestra su caracter, su codigo hexadecimal y su codigo ascii. Y para mi sorpresa en ambos casos es el mismo. Es decir aparentemente Java no es capaz de diferenciarlos.
Alguien sabe como cojones puedo diferenciarlos u obtener su codigo hexadecimal correctamente (Me dice q es ffffffd)
Os dejo el codigo a continuación, por si acaso.
//Este no consigue leerlo
System.out.println("GKARREEF");
//atrDesc contiene la descrpción del objeto
String desc = "";
if (atrDesc!=null && atrDesc.getValor()!=null)
desc=(String)atrDesc.getValor();
if (desc!=null && desc!=""){
char[] cadena = desc.toCharArray();
// Comprobamos si contiene el caracter chungo
for (int k=0;k<cadena.length;k++){
int valor=new Integer((byte)cadena[k]+"").intValue();
System.out.println(cadena[k]+" -> "+Integer.toHexString(valor)+
" ->"+(byte)cadena[k]);
}
}
// Este si consigue leerlo
System.out.println("GKARRERE");
// atrDesc2 contiene la descrpción del objeto
if (atrDesc2!=null && atrDesc2.getValor()!=null)
desc2=(String)atrDesc2.getValor();
if (desc2!=null && desc2!=""){
char[] cadena2 = desc2.toCharArray();
// Comprobamos si contiene el caracter chungo
for (int k=0;k<cadena2.length;k++){
int valor=new Integer((byte)cadena2[k]+"").intValue();
System.out.println(cadena2[k]+" -> "+Integer.toHexString(valor)+
" ->"+(byte)cadena2[k]);
}
}
Y aquí la salida que muestra por consola:
Thx!!