Tengo un escenario en el que algunos caracteres especiales se almacenan en una base de datos (sybase) en la codificación predeterminada del sistema y tengo que buscar estos datos y enviarlos a un tercero con codificación UTF-8 usando un Programa Javacodificación Java UTF8
Condición previa que los datos enviados a un tercero no deben exceder un tamaño máximo definido. Desde la conversión a UTF-8 un personaje puede ser reemplazado por 2 o 3 caracteres, entonces mi lógica dicta que después de obtener los datos de la base de datos debo codificarlos en la cadena UTF-8 y luego dividir la cadena. Las siguientes son mis observaciones:
Cuando aparece cualquier carácter especial como caracteres chinos o griegos o cualquier carácter especial> ASCII 256 y cuando lo convierto en UTF-8, un solo carácter puede estar representado por más de 1 byte.
Entonces, ¿cómo puedo estar seguro de que la conversión es correcta? Para la conversión estoy usando el siguiente
// storing the data from database into string
string s = getdata from the database;
// converting all the data in byte array utf8 encoding
byte [] b = s.getBytes("UTF-8");
// creating a new string as my split logic is based on the string format
String newString = new String(b,"UTF-8");
Pero cuando la producción de este newString a la consola consigo ?
de los caracteres especiales.
así que tengo algunas dudas:
- Si mi lógica de conversión es malo, entonces ¿Cómo podría corregirlo.
- Después de hacer mi conversión a UTF-8, ¿puedo verificar si mi conversión es correcta o no? Quiero decir que es el mensaje correcto que debe enviarse a un tercero, supongo que si el mensaje no es legible por el usuario después de la conversión, entonces hay algún problema con la conversión.
Me gustaría tener algunos puntos de vista de todos los expertos.
Háganme saber si se necesita más información de mi parte.
Eso parece ser un problema con su consola, en lugar de la conversión, que hasta donde yo sé, está bien. ¿Has intentado escribirlo en un archivo de texto en lugar de hacerlo en la consola y abrirlo con un editor de texto? – biziclop
ha intentado sacar la cadena original? Es posible que la fuente utilizada por su consola no contenga estos caracteres – josefx
La tarea de convertir de unicode a utf-8 y hacer que los caracteres se muestren correctamente no está exenta de problemas. Un contacto encontró una solución el año pasado. Le preguntaré cómo logró que esto funcione. –