El otro dia me encontre en el trabajo que cuando intentaba subir segun que textos a la base de datos resultaba que me los metia como interrogantes, despues de mucho buscar, buene en realidad solo busque unas 3 horas, di con un conjunto de funciones implementadas en JAVA que me solucionaba el papel, las funciones son las siguientes:
public static void main(String[] args) { writeOutput(readInput(args[0]), args[0]); } static void writeOutput(String str, String file) { try { FileOutputStream fos = new FileOutputStream(file); Writer out = new OutputStreamWriter(fos, "8859_2"); out.write(str); out.close(); } catch (IOException e) { e.printStackTrace(); } } static String readInput(String file) { StringBuffer buffer = new StringBuffer(); try { FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, "UTF8"); Reader in = new BufferedReader(isr); int ch; while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); return buffer.toString(); } catch (IOException e) { e.printStackTrace(); return null; } }
Mi principal problema era que el fichero que se subia era UTF8 en el que los caracteres son Unicode, eso hace que la lectura binaria del fichero sea por la suma de dos caracteres del tipo hexadecimal, por lo que cuando se subia a la base de datos cada caracter hexadecimal se subía como un caracter normal, esto hacia que cada vez que se encontraba un caracter impar ponia un espacio o en su defecto un cuadrado.
La solucion que aqui os planteo es una que transforma el fichero del tipo UTF8 al tipo ISO 8859_2 que viene a ser nuestro charset en la zona occidental de Europa
0 comentarios: (+add yours?)
Publicar un comentario