Является ли ED A0 80 ED B0 80 действительной последовательностью байтов UTF-8?

java.nio.charset.Charset.forName ( "utf8"). декодирование декодирует последовательность байтов

 ED A0 80 ED B0 80

в кодовую точку Unicode:

 U+10000

java.nio.charset.Charset.forName ( "utf8"). декодирование также декодирует последовательность байтов

 F0 90 80 80

в кодовую точку Unicode:

 U+10000

Это подтверждаетсякод ниже.

Теперь это говорит мне о том, что схема кодирования UTF-8 будет декодироватьED A0 80 ED B0 80 а такжеF0 90 80 80 в тот же код Unicode.

Однако, если я посещуhttps://www.google.com/search?query=% ED% A0% 80% ED% B0% 80,

Я вижу, что это явно отличается от страницыhttps://www.google.com/search?query=% F0% 90% 80% 80

Поскольку в Поиске Google используется схема кодирования UTF-8 (поправьте меня, если я ошибаюсь),

Это говорит о том, что UTF-8 не декодируетED A0 80 ED B0 80 а такжеF0 90 80 80 в ту же кодовую точку (ы) Unicode.

Так что в основном мне было интересно,официальный стандарт, должен декодировать UTF-8ED A0 80 ED B0 80 последовательность байтов в кодовую точку Unicode U + 10000?

Код:

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)));
        }
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос