UTF-16LE 和 UTF-16BE
C/C++ 2-5 38浏览 0评论UTF-16LE 和 UTF-16BE 都是双字节编码,但它们的主要区别在于字节顺序(即字节的排列顺序)。 UTF-16 的基本特性 双字节编码: UTF-16 使用 2个字节(16位) 来表示一个字符。 对于超出基本多语言平面(BMP,即 U+0000 到 U+FFFF)的字符,UTF-16 使用 4个字节(代理对,Surrogate Pair) 来表示。 字节顺序: UTF-16 有两种字节顺序: UTF-16LE(Little Endian):低字节在前,高字节在后。 UTF-16BE(Big Endian):高字节在前,低字节在后。 UTF-16LE 和 UTF-16BE 的区别 1. UTF-16LE(Little Endian) 字节顺序:低字节在前,高字节在后。 例如,字符 A(Unicode 码点 U+0041)的编码为: 低字节:0x41 高字节:0x00 存储顺序:0x41 0x00 2. UTF-16BE(Big Endian) 字节顺序:高字节在前,低字节在后。 例如,字符 A(Unicode 码点 U+0041)的编码为: 高字节:0x00 低字节:0x41 存储顺序:0x00 0x41 BOM(字节顺序标记) UTF-16 文件通常以 BOM(Byte Order Mark) 开头,用于指示字节顺序: UTF-16LE 的 BOM 是 0xFF 0xFE。 UTF-16BE 的 BOM 是 0xFE 0xFF。 如果没有 BOM,则需要通过其他方式推断字节顺序。 示例 以下是一个简单的示例,展示 UTF-16LE 和 UTF-16BE 的编码差异: 字符:A(Unicode 码点 U+0041) UTF-16LE:0x41 0x00 UTF-16BE:0x00 0x41 字符:汉(Unicode 码点 U+6C49) UTF-16LE:0x49 0x6C UTF-16BE:0x6C 0x49 总结 UTF-16LE 和 UTF-16BE 都是双字节编码,但它们的字节顺序相反。 对于超出 BMP 的字符(如 Emoji),UTF-16 使用 4 个字节(代理对)表示。 通过 BOM 可以区分 UTF-16LE 和 UTF-16BE。 希望这个解释能帮助你更好地理解 UTF-16LE 和 UTF-16BE 的区别!如果还有其他问题,欢迎随时提问!