文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Encode UCS-2 UTF-16 编码的区别

Encode UCS-2 UTF-16 编码的区别

时间:2010-07-02  来源:黑色阳光_cu


#!/bin/env perl


use strict;
use warnings;
use Encode;
use Encode::CN;
use encoding "gbk";

my $char = "你好世界";
my $c1 = unpack("H*", encode("UTF-16", $char));
my $c2 = unpack("H*", encode("UCS-2", $char));
my $c3 = unpack("H*", encode("UTF-16LE", $char));
print "$c1 $c2 $c3\n";


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)

相关阅读 更多 +
排行榜 更多 +
泡龙大闯关安卓版

泡龙大闯关安卓版

冒险解谜 下载
割草派对安卓版

割草派对安卓版

飞行射击 下载
堡垒攻防战安卓版

堡垒攻防战安卓版

飞行射击 下载