¿Es ED A0 80 ED B0 80 una secuencia de bytes UTF-8 válida?

java.nio.charset.Charset.forName ("utf8"). decode decodifica una secuencia de bytes de

 ED A0 80 ED B0 80

en el punto de código Unicode:

 U+10000

java.nio.charset.Charset.forName ("utf8"). decode también decodifica una secuencia de bytes de

 F0 90 80 80

en el punto de código Unicode:

 U+10000

Esto es verificado porcode debajo de.

Ahora esto parece estar diciéndome que el esquema de codificación UTF-8 decodificaráED A0 80 ED B0 80 yF0 90 80 80 en el mismo punto de código unicode.

Sin embargo, si visitohttps: //www.google.com/search? query =% ED% A0% 80% ED% B0% 80,

Puedo ver que es claramente diferente de la páginahttps: //www.google.com/search? query =% F0% 90% 80% 80

Dado que la Búsqueda de Google está utilizando el esquema de codificación UTF-8 (corrígeme si me equivoco) también,

Esto sugiere que el UTF-8 no decodificaED A0 80 ED B0 80 yF0 90 80 80 en los mismos puntos de código unicode.

Así que básicamente me preguntaba, por eloficia estándar, debe decodificar UTF-8ED A0 80 ED B0 80 secuencia de bytes en el punto de código Unicode U + 10000?

Códig:

public class Test {

    public static void main(String args[]) {
        java.nio.ByteBuffer bb = java.nio.ByteBuffer.wrap(new byte[] { (byte) 0xED, (byte) 0xA0, (byte) 0x80, (byte) 0xED, (byte) 0xB0, (byte) 0x80 });
        java.nio.CharBuffer cb = java.nio.charset.Charset.forName("utf8").decode(bb);
        for (int x = 0, xx = cb.limit(); x < xx; ++x) {
            System.out.println(Integer.toHexString(cb.get(x)));
        }
        System.out.println();
        bb = java.nio.ByteBuffer.wrap(new byte[] { (byte) 0xF0, (byte) 0x90, (byte) 0x80, (byte) 0x80 });
        cb = java.nio.charset.Charset.forName("utf8").decode(bb);
        for (int x = 0, xx = cb.limit(); x < xx; ++x) {
            System.out.println(Integer.toHexString(cb.get(x)));
        }
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta