Por lo que yo entiendo, usted está tratando de almacenar caracteres (de s1
) que contiene caracteres Latin-1 no en una base de datos que sólo es compatible con ISO 8859-1.
En primer lugar, estoy de acuerdo con los demás en decir que es una mala idea.
Tenga en cuenta que CP1252 está cerca de la norma ISO-8859-1 (1 byte por carácter) e incluye ™
Ahora, a anwser su pregunta, creo que hizo todo lo contrario ..
quiere codificar UTF-8 bytes en ISO-8859-1:
String s2 = new String(s1.getBytes("UTF-8"), "ISO-8859-1");
de esta manera, s2
es una cadena characher que, una vez codificado en ISO-8859-1, devolverá una matriz de bytes que puede parecer como UTF-8 válido bytes.
Para recuperar la cadena original, que haría
String s1 = new String(s2.getBytes("ISO-8859-1"),"UTF-8");
pero espera! Al hacer esto, espera que cualquier byte se pueda decodificar con ISO-8859-1 .. y que su DB aceptará tales datos. etc.
De hecho, es realmente inseguro porque oficialmente, ISO-8859-1 doesn't have chars for any byte values. Por ejemplo, de 80 a 9F.
Entonces,
byte[] b = { -97, -100, -128 };
System.out.println(new String(b,"ISO-8859-1"));
mostraría ???
Sin embargo, en Java , s.getBytes("ISO-8859-1")
de hecho restaura la matriz inicial.
Eche un vistazo a http://stackoverflow.com/questions/285228/how-to-convert-utf-8-to-us-ascii-in-java No exactamente un duplicado, pero similar. –