perl中的字符编码

首先说说各种编码的定义。
1.字符编码、内码、汉字编码
      ASCII、GB2312、GBK、GB18030向下兼容,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。

2.Unicode、UCS、UTF
      Unicode只与ASCII兼容,与GB码不兼容。Unicode也是一种字符编码方式,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方 案。其中UCS规定怎么用多个字节表示各种文字,UTF则规定怎么传输这些编码。现在一般使用UCS-2,即用两个字节进行编码。而所说的UFT-8就是 以8位为单元对UCS进行编码。

3.cp936是什么?
      Unicode统一了编码,但是如何兼容各国的文字编码就需要用到codepage,codepage就是各国的文字编码和Unicode之间的映射表,比如简体中文和Unicode的映射表就是CP936。
      从936中随意取一行,例如:
                          0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
      前面的编码是GBK的编码,后面的是Unicode,通过查这张表,就能简单的实现GBK和Unicode之间的转换。
4.perl
      Perl的内部字符串格式:一般是UTF-8,length()得到的是字符个数,注意如果用encode得到UTF-8编码字符串,则length()得到的是字节数。
      举例:
            $string = "中国";              #cp936,字节流
            $internal = decode("cp936",$string);
            length($internal) = 2;
            $utf8 = encode("utf8",$internal); #将perl内部字符串转化为字节流
            length($uft8) = 6;

encode三种模式:
a) use encode:
      $octets = encode(ENCODING, $string [, CHECK])
      将一个字符串从Perl内部格式转到ENCODING编码。
      $string = decode(ENCODING, $octs [, CHECK])
      将一个字符串从ENCODING编码转到Perl内部格式。

b) use from_to:
      [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK])
      将$octets从FROM_ENC编码转到TO_ENC编码。 
c) use binmode:
      binmode(STDOUT, ":utf8")
      指示输出到STDOUT时将字符串(Perl内部格式)转换成UTF-8编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值