java - UTF-16编码问题
黄舟
黄舟 2017-04-17 17:59:08
0
2
992
        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到底是如何编码的呢?求赐教。

黄舟
黄舟

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

membalas semua(2)
黄舟

UTF-16 ialah format pengekodan panjang berubah-ubah dengan sekurang-kurangnya dua bait. Kerana ia adalah dua bait, Big Endian dan Endian Kecil terlibat. Dalam contoh anda di atas, kerana endianess tidak ditentukan, BOM dua bait ditambah. Ditambah dengan dua bait pengekodan aksara asal (ASCII), jadi 4 bait. Jika anda menggunakan utf-16-le atau utf-16-be, ia akan menjadi dua bait. Sila semak diri anda untuk perwakilan Java tertentu.

刘奇

Selepas penyahkodan UTF-16

feff0061 //a
feff0062 //b
feff0063 //c
feff006100620063 //abc
Terdapat feff pada permulaan

, yang digunakan untuk menunjukkan bahawa rentetan adalah big-endian (bait tertib tinggi berada di hadapan. Sebab tanda ini ialah terdapat dua jenis big-endian). dan little-endian (bait tertib tinggi berada di belakang) dalam Mod, 0x01 0x02 dibaca sebagai 0x0102 dalam endian besar, dan nilai yang sama dibaca sebagai 0x0201 dalam endian kecil, yang berbeza, jadi ia memerlukan. untuk ditanda dalam feff.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan