perl中的字符编码_perl语言设置编码规范-程序员宅基地

技术标签: 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编码。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whb9526/article/details/52587045

智能推荐

分布式系统唯一ID生成方案汇总_mongodb objectid生成算法-程序员宅基地

我的公众号「码农之屋」(id: Spider1818),分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。文章目录 1. 数据库自增长序列或字段 2. UUID 3. UUID的变种 ..._mongodb objectid生成算法

xCode 10 XIB控件列表-程序员宅基地

对于一个百十年不用storybord的人来说,找个控件列表还得找找。搞了半天是苹果换姿势了,下面是正确姿势..... _xib控件列表

echarts--例子-程序员宅基地

echarts使用例子: 1 <script type="text/javascript"> 2 option = { 3 title : {'x': 'center','y':'top','text': '时间关键指标趋势图'}, 4 tooltip : { 5 ..._echarts例子

Android adb实现原理-程序员宅基地

adb定义、adb的开启和关闭、adb的连接方式、adb的原理图

Python 正则表达式学习笔记-程序员宅基地

贪婪模式与非贪婪模式方法 findall问号实现可选的匹配reS正则表达式的分组分隔符不一致的情况下,可以使用 re.split() 的方法。虽然字符串对象也提供了 split() 方法。import reline = 'asdf fjdk; afed, fjek,asdf, foo'list = re.split(r'[;,\s]\s*', line)print(list)# ['

Python学习笔记(9-2):数据分析——数据统计_msemedian=[np.median(-1*scores['test_score'])] mse_butterfly_701c的博客-程序员宅基地

本节主要讲解了python数据分析中数据的统计及检验方法,包括:(1)基于numpy和pandas方法对数据进行基本的统计;(2)多种分布检验、参数检验、非参数检验、协方差与相关性的计算方法;(3)基于random包、numpy.random包和scipy.stats包的随机采样;(4)基于numpy.polynomial和scipy.stats的分布与回归拟合。_msemedian=[np.median(-1*scores['test_score'])] msevar=[(-1*scores['test_scor

随便推点

C/C++ 基本语法-程序员宅基地

转自:微点阅读https://www.weidianyuedu.com1.域操作符:C++ 支持通过域操作符访问全局变量,C不支持(识别为重定义)2.++i和i++的效率分析:内置类型,无区别自定义数据类型,++i可以返回引用,i++只能返回对象值(拷贝开销)3.浮点数与0的判断if(x >= -epsinon || x <= epsinon)4.不借用中间变量的swap实现。借助和借助异或(相同为0,不同为1)// 借助和(存在溢出风险)vo..

CF1385E Directing Edges 拓扑序_m0t0edges-程序员宅基地

传送门文章目录题意:思路:题意:给你一个图和若干个边,有些是有向边,有些是无向边,让你给无向边定向,使得最终的图是DAGDAGDAG。思路:题目让构造DAGDAGDAG,比较容易想到拓扑序。首先我们需要知道拓扑图中的点都是从拓扑序小的指向拓扑序大的,所以我们就可以根据这个连边。在原来有向图上做一遍拓扑排序,有环的话直接无解就好啦,否则我们就按照拓扑序小的向拓扑序大的连边,这样一定可以保证是正确的。// Problem: E. Directing Edges// Contest: Codef_m0t0edges

[风火之旅]坐骑镶嵌'马掌' 更显神威-程序员宅基地

在《风火之旅》首部资料片前章“使命召唤”中,我们将为广大风火英雄们推出了特殊的坐骑镶嵌道具——马掌!只要将马掌镶嵌到你心爱的坐骑上,就能大大增强它的威力,惊人的属性加成将使你感到全身心的蜕变!- [风火之旅]坐骑镶嵌"马掌" 更显神威

react-router_教程_react-retour-程序员宅基地

1. 理解react-routerreact的一个插件库专门用来实现一个SPA应用基于react的项目基本都会用到此库2. 几个重要问题1). SPA应用单页Web应用(single page web application,SPA)整个应用只有一个完整的页面点击页面中的链接不会刷新页面, 本身也不会向服务器发请求当点击链接时, 只会做页面的局部更新数据都需要通过ajax请求获取, 并在前端异步展现2). 路由1. 什么是路由? 一个路由就是一个映射关系(key:value)_react-retour

计算机组成作业,计算机组成原理-作业参考答案(1)_dashintolight的博客-程序员宅基地

《计算机组成原理-作业参考答案(1)》由会员分享,可在线阅读,更多相关《计算机组成原理-作业参考答案(1)(12页珍藏版)》请在金锄头文库上搜索。1、第1章 计算机系统概论5. 冯诺依曼计算机的特点是什么?解:冯诺依曼计算机的特点是:P8(1) 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成;(2) 指令和数据以同同等地位存放于存储器内,并可以按地址访问;(3) 指令和数据均用二进..._已知x补求x原与x

D8 双连通分量-程序员宅基地

记得有个梗那一天,zw学生zzh大佬说逃不掉的路变成a不掉的题哈哈哈哈;分离的路径:BZOJ 1718POJ 3177LUOGU 286;思路:在同一个边双连通分量中,任意两点都有至少两条独立路可达,所以同一个边双连通分量里的所有点可以看做同一个点。缩点后,新图是一棵树,树的边就是原无向图的桥。现在问题转化为:在树中至少添加多少条边能使图变为双连通图。结论:添加边数=(树...