Tengo un tampón con caracteres codificados en Windows-1252. Sin embargo al crear una nueva Cadena con codificación apropiada, en lugar de resultado esperado he muy a menudo interrogatorio marcas, ex.
byte[] tmps = new byte[] {(byte) 0xfb};
System.out.println (new String (tmps,0,1,"Windows-1252" ));
Como resultado el sistema debe mostrar la «u» char con «^» por encima de él. En su lugar se muestra «?».
Alguna idea?
- Me tiró este código en una unidad de prueba en NetBeans 8 uso de Java 8, y se muestra la «u» con el acento circunflejo bien.
Primero de todos los Windows-1252 es un admite codificación:
Si no se obtiene un
UnsupportedEncodingException
ennew String (...,"Windows-1252")
. (Que es lo que la javadoc dice!)El Oracle Java documentación decir de Windows-1252 es en la «Base de la Codificación de juego» – http://docs.oracle.com/javase/7/docs/technotes/guides/intl/encoding.doc.html, http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html, etcétera.
Creo que lo más probable es que el problema aquí está en el lado de salida. Específicamente, Java puede pensar que la configuración regional predeterminada del conjunto de caracteres ASCII o algo que no sea compatible con el punto de código.
Una forma de eliminar
Windows-1252
como el causa de este problema es escribir el equivalente de cadena mediante un escape Unicode; por ejemplo,Ya he encontrado esto.
Menú Run/Run configurations/siguiente Aplicación de Java y su propio nombre de la aplicación/ficha común/siguiente de la codificación de juego a UTF-8
Y desde ahora windows 1250 y 1252 chars parece mostrarse aceptar.