ED A0 80 ED B0 80 é uma sequência de bytes UTF-8 válida?

java.nio.charset.Charset.forName ("utf8"). decode decodifica uma sequência de bytes de

 ED A0 80 ED B0 80

no ponto de código Unicode:

 U+10000

java.nio.charset.Charset.forName ("utf8"). decode também decodifica uma sequência de bytes de

 F0 90 80 80

no ponto de código Unicode:

 U+10000

Isso é verificado pelocode abaixo.

Agora, isso parece estar me dizendo que o esquema de codificação UTF-8 decodificaráED A0 80 ED B0 80 eF0 90 80 80 no mesmo ponto de código unicod

No entanto, se eu visitarhttps: //www.google.com/search? query =% ED% A0% 80% ED% B0% 80,

Vejo que é claramente diferente da páginahttps: //www.google.com/search? query =% F0% 90% 80% 80

Desde que a Pesquisa do Google está usando o esquema de codificação UTF-8 (corrija-me se estiver errado) também,

Isso sugere que o UTF-8 não decodificaED A0 80 ED B0 80 eF0 90 80 80 no mesmo ponto de código unicod

Então, basicamente, eu queria saber, pelooficia padrão, o UTF-8 deve decodificarED A0 80 ED B0 80 sequência de bytes no ponto 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)));
        }
    }
}

questionAnswers(3)

yourAnswerToTheQuestion