utf8 - java string to unicode
La codificación ''UTF-8'' no es compatible con el tiempo de ejecución de Java (6)
De acuerdo con la documentación "Se requiere cada implementación de la plataforma Java para admitir los siguientes conjuntos de caracteres estándar ... US-ASCII, ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16." Así que dudo que Sun haya lanzado una compilación sin soporte UTF-8.
El mensaje de error real parece ser desde aquí , que es parte del analizador Xerces XML. Me imagino que es el analizador XML donde está ocurriendo el problema.
Cada vez que inicio nuestra aplicación basada en Apache Felix (OSGi) bajo SUN Java (compilación 1.6.0_10-rc2-b32 y otras compilaciones 1.6.x) veo el siguiente mensaje de salida en la consola (generalmente bajo Ubuntu 8.4):
Advertencia: La codificación ''UTF-8'' no es soportada por el tiempo de ejecución de Java.
He visto este mensaje de vez en cuando cuando ejecuto tanto Tomcat como Resin. Si java admite Unicode y UTF-8, ¿qué causa este mensaje? Aún no he encontrado ninguna referencia o respuesta a esto en ningún otro lado.
Lo más probable es que alguien ponga un catch () esperando solo tener excepciones de codificación no compatibles, por lo que usó el mensaje apropiado. Pero ha utilizado una especificación de excepción demasiado amplia (por ejemplo, catch (Exception ex)), por lo que cuando en el tiempo de ejecución tiene algo más (XML no válido, NPE, ...) el mensaje se volvió engañoso.
Pruebe el siguiente programa:
import java.nio.charset.Charset;
public class TestCharset {
public static void main(String[] args) {
System.out.println(Charset.forName("UTF-8"));
}
}
Si esto arroja una excepción, entonces hay algo mal con su JDK. Si imprime "UTF-8", su JDK está bien y su aplicación está haciendo algo extraño.
Si ese es el caso, ejecute su aplicación debajo del depurador y coloque un punto de interrupción en http://www.java2s.com/Open-Source/Java-Document/XML/xalan/org/apache/xml/serializer/ToStream.java .htm - ese es el lugar donde se produce esta advertencia, y paso a ver por qué Xalan no puede encontrar la codificación.
Pruebe con una JVM diferente (versión estable). Tuve este problema una vez y resultó que la máquina estaba ejecutando una versión beta JVM que de hecho no era compatible con UTF-8, al contrario de lo que exige el API docs.
Debería ser "UTF8", sin el guión.
Si recibe este mensaje cuando usa un transformador, intente especificar TransformerFactory:
enlazar