java - UTF-16编码问题
黄舟
黄舟 2017-04-17 17:59:08
0
2
995
        String str1="a";
        String str2="b";
        String str3="c";
        String str4="abc";
        System.out.println(str1.getBytes("UTF-16").length);//4
        System.out.println(str2.getBytes("UTF-16").length);//4
        System.out.println(str3.getBytes("UTF-16").length);//4
        System.out.println(str4.getBytes("UTF-16").length);//8

        System.out.println(str1.getBytes("UTF-8").length);//1
        System.out.println(str2.getBytes("UTF-8").length);//1
        System.out.println(str3.getBytes("UTF-8").length);//1
        System.out.println(str4.getBytes("UTF-8").length);//3

        System.out.println(str1.getBytes("UTF-32").length);//4
        System.out.println(str2.getBytes("UTF-32").length);//4
        System.out.println(str3.getBytes("UTF-32").length);//4
        System.out.println(str4.getBytes("UTF-32").length);//12

Unicde编码中不明白的,像UTF-8/UTF-32中str4编码后字节数都是str1+str2+str3,但UTF-16则不然,UTF-16到底是如何编码的呢?求赐教。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(2)
黄舟

UTF-16 est un format d'encodage de longueur variable avec un minimum de deux octets. Parce qu'il s'agit de deux octets, Big Endian et Small Endian sont impliqués. Dans votre exemple ci-dessus, comme endianess n'est pas spécifié, une nomenclature de deux octets est ajoutée. Plus les deux octets du codage du caractère original (ASCII), cela fait donc 4 octets. Si vous utilisez utf-16-le ou utf-16-be, ce sera deux octets. Veuillez vérifier vous-même la représentation Java spécifique.

刘奇

Après décodage UTF-16

feff0061 //a
feff0062 //b
feff0063 //c
feff006100620063 //abc
Il y a feff au début de

, qui est utilisé pour indiquer que la chaîne est big-endian (l'octet de poids fort est au début). La raison de cette marque est qu'il existe deux types de big-endian. et little-endian (l'octet de poids fort est à l'arrière) dans le mode système, 0x01 0x02 est lu comme 0x0102 en big endian, et la même valeur est lue comme 0x0201 en little endian, ce qui est différent, donc il en a besoin. à marquer en feff.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal