Encode UCS-2 UTF-16 编码的区别
时间:2010-07-02 来源:黑色阳光_cu
#!/bin/env perl |
D:\>test.pl
feff4f60597d4e16754c 4f60597d4e16754c 604f7d59164e4c75
我们可以看到,UTF-16编码自动加上了BOM feff,而UCS-2没有。由于默认的字节列是小端序,UCS-16LE也就没有自动加上BOM fffe。
什么是BOM
BOM(byte-order mark), 即字节顺序标 记,它是插入到以UTF-8、UTF16或UTF-32编 码Unicode文件开头的特殊标记,用来识别Unicode文 件的编码类型。对于UTF-8来说,BOM并 不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)。
在绝大多数编辑器中都看不到BOM字符, 因为它们能理解Unicode,去掉了读取器看不到的题头信息。若要查看某个Unicode文 件是否以BOM开头,可以使用十六进制编辑器。下表列出了不同编码所对应的BOM。
BOM |
Encoding |
EF BB BF |
UTF-8 |
FE FF |
UTF-16 (big-endian) |
FF FE |
UTF-16 (little-endian) |
00 00 FE FF |
UTF-32 (big-endian) |
FF FE 00 00 |
UTF-32 (little-endian) |