英语法语西班牙语

OnWorks 网站图标

perlunitut - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管提供商中运行 perlunitut

这是 perlunitut 命令,可以使用我们的多个免费在线工作站之一(例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器)在 OnWorks 免费托管提供商中运行

程序:

您的姓名


perlunitut - Perl Unicode 教程

商品描述


仅仅随心所欲地扔绳子的日子已经结束了。 众所周知,现代
程序需要能够传达有趣的带口音的字母,比如欧元
符号。 这意味着程序员需要新的习惯。 很容易编写支持 Unicode 的程序
软件,但它确实需要纪律才能正确完成。

关于字符集和文本编码有很多东西需要了解。 最好是
花一整天的时间来学习所有这些,但基础知识只需几分钟即可学会。

不过,这些都不是最基本的。 假设您已经知道其中的区别
字节和字符之间,并意识到(并接受!)有许多不同的
字符集和编码,并且您的程序必须明确它们。
推荐阅读“每个软件开发人员的绝对最低限度,
必须了解 Unicode 和字符集(没有任何借口!)”作者:Joel Spolsky,网址:
<http://joelonsoftware.com/articles/Unicode.html>.

本教程使用的是相当绝对的术语,并且仅提供了有限的视图
Perl 提供了丰富的字符串相关功能。 对于大多数项目来说,
这些信息可能就足够了。

定义
首先弄清楚一些事情很重要。 这是最重要的部分
教程。 此视图可能与您在网站上找到的其他信息相冲突
网络,但这主要是因为许多来源都是错误的。

您可能需要重新阅读整个部分几次......

统一

统一 是一个可以容纳很多字符的字符集。 a 的序数值
字符被称为 。 (但实际上,代码点之间的区别
并且字符模糊,因此这些术语经常互换使用。)

有很多很多的代码点,但是计算机使用字节来工作,并且一个字节有空间
只有 256 个值。 Unicode 的字符比这多得多,所以你需要一种方法来制作
这些可以访问。

Unicode 使用多种竞争编码进行编码,其中使用最多的是 UTF-8。 在
Unicode 编码,多个后续字节可用于存储单个代码点,或者
简单地说:性格。

UTF-8

UTF-8 是Unicode编码。 很多人认为Unicode和UTF-8是同一个东西,
但他们不是。 Unicode 编码有更多,但世界上大部分地区已经标准化
在 UTF-8 上。

UTF-8 对待前 128 个代码点 0..127,与 ASCII 相同。 它们只占用一个字节
每个字符。 所有其他字符都使用复杂的编码为两到四个字节
方案。 幸运的是,Perl 为我们处理了这个问题,所以我们不必担心这个问题。

文本 字符串 (特点 字符串)

文本 字符串字符 字符串 是由字符组成的。 字节在这里无关紧要,并且
编码也是如此。 每个角色就是:角色。

在文本字符串上,您可以执行以下操作:

$text =~ s/foo/bar/;
if ($string =~ /^\d+$/) { ... }
$text = ucfirst $text;
我的 $character_count = length $text;

字符的值(“ord”、“chr”)是相应的 Unicode 代码点。

二进制 字符串 (字节 字符串)

二进制 字符串字节 字符串 由字节组成。 在这里,你没有角色,只有
字节。 与外界的所有通信(当前 Perl 之外的任何内容)
process)以二进制形式完成。

对于二进制字符串,您可以执行以下操作:

my (@length_content) = 解压“(V/a)*”, $binary;
$二进制=~s/\x00\x0F/\xFF\xF0/; # 对于勇敢者:)
打印 {$fh} $binary;
我的 $byte_count = 长度 $binary;

喷码

喷码 (作为动词)是从 文本二进制。 要编码,您必须提供
目标编码,例如“iso-8859-1”或“UTF-8”。 一些编码,例如
“iso-8859”(“拉丁语”)范围,不支持完整的 Unicode 标准; 字符
无法表示的部分会在转换中丢失。

解码

解码 是从 二进制文本。 要解码,你必须知道什么编码
在编码阶段使用。 最重要的是,它必须是可解码的。 它
将 PNG 图像解码为文本字符串没有多大意义。

内部 格式

Perl 有一个 内部 格式,一种用于对文本字符串进行编码的编码,以便可以
将它们存储在内存中。 所有文本字符串均采用此内部格式。 事实上,文本字符串
绝不会采用任何其他格式!

您不必担心这种格式是什么,因为转换是自动完成的
当您解码或编码时。

您一站式解决方案 工具箱
将以下行添加到您的标准标题中:

使用编码qw(编码解码);

或者,如果你很懒,就:

使用编码;

I / O 实际 5 分钟 教程)
程序的典型输入/输出流程是:

1. 接收并解码
2。 处理
3. 编码与输出

如果您的输入是二进制的,并且应该保持二进制,则不应将其解码为
当然是文本字符串。 但在所有其他情况下,您应该对其进行解码。

如果您不知道数据是如何编码的,则无法可靠地进行解码。 如果你到达
选择,标准化 UTF-8 是个好主意。

我的 $foo = 解码('UTF-8', 得到 'http://example.com/');
我的 $bar = 解码('ISO-8859-1', readline STDIN);
我的 $xyzzy = 解码('Windows-1251', $cgi->param('foo'));

处理过程如您之前所知。 唯一的区别是您现在使用的是
字符而不是字节。 如果您使用“substr”之类的东西,这非常有用,或者
“长度”。

重要的是要认识到文本字符串中没有字节。 当然,Perl 有
它的内部编码将字符串存储在内存中,但忽略它。 如果你必须这样做
任何与字节数相关的内容,最好将该部分移至步骤 3,只需
对字符串进行编码后。 然后你就知道它有多少字节了
目标字符串。

将文本字符串编码为二进制字符串的语法与解码一样简单:

$body = 编码('UTF-8', $body);

如果您需要知道字符串的长度(以字节为单位),那么现在是最佳时机。
因为 $body 现在是字节字符串,所以“length”将报告字节数,而不是
字符数。 字符的数量已经不知道了,因为字符
只存在于文本字符串中。

我的 $byte_count = 长度 $body;

如果您使用的协议支持让收件人知道哪个协议
您使用的字符编码,请帮助接收端使用该功能! 为了
例如,电子邮件和 HTTP 支持 MIME 标头,因此您可以使用“Content-Type”标头。
它们还可以有“Content-Length”来指示内容的数量 字节,这始终是一个
如果知道号码,最好提供。

“内容类型:文本/纯文本;字符集=UTF-8”,
“内容长度:$byte_count”

概要


解码您收到的所有内容,编码您发送的所有内容。 (如果是文本数据。)

Q A (或 常问问题)


阅读完本文档后,您还应该阅读 perlunifaq,然后是 perluniintro。

致谢


感谢 Squirrel Consultancy 的 Johan Vromans。 他在阿姆斯特丹会议期间对 UTF-8 的咆哮
Perl Mongers 会议让我产生了兴趣并决心找出如何使用字符
Perl 中的编码方式不易被破坏。

感谢来自 TTY 的杰拉德·古森 (Gerard Goossen)。 他的演讲“野外的 UTF-8”(荷兰语 Perl
Workshop 2006)启发我发表了我的想法并编写了本教程。

感谢在几个 Perl IRC 频道中询问此类内容的人们,以及
不断提醒我需要一个更简单的解释。

感谢在这份文件公开之前为我审阅这份文件的人们。 他们是:
本杰明·史密斯、扬·彼得·科内特、约翰·弗罗曼斯、卢卡斯·麦、内森·格雷。

使用 onworks.net 服务在线使用 perlunitut


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    VBA-M(已存档 - 现在在 Github 上)
    VBA-M(已存档 - 现在在 Github 上)
    项目已移至
    https://github.com/visualboyadvance-m/visualboyadvance-m
    特征:作弊创作保存状态多
    系统,支持gba, gbc, gb, sgb,
    sgb2图...
    下载 VBA-M(存档 - 现在在 Github 上)
  • 2
    Stacer
    Stacer
    Linux 系统优化器和监控
    Github 存储库:
    https://github.com/oguzhaninan/Stacer.
    受众:最终用户/桌面。 用户
    接口:Qt。 编程拉...
    下载 Stacer
  • 3
    橙狐
    橙狐
    TeamWinRecoveryProject(TWRP) 的分支
    具有许多附加功能,重新设计
    以及更多功能:支持高音和
    非 Treble ROM 最新的 Oreo 内核,
    建...
    下载橙狐
  • 4
    itop - ITSM CMDB 开源
    itop - ITSM CMDB 开源
    IT 运营门户:完全开放
    源,ITIL,基于 Web 的服务
    管理工具,包括一个完全
    可定制的 CMDB、帮助台系统和
    一个文件人...
    下载 itop - ITSM CMDB OpenSource
  • 5
    克莱门汀
    克莱门汀
    Clementine 是一种多平台音乐
    玩家和图书馆组织者的灵感来自
    阿玛洛克 1.4。 它有一个快速和
    易于使用的界面,并允许您
    搜索和...
    下载克莱门汀
  • 6
    西马
    西马
    注意:累积更新 2.4.3 有
    被释放了!! 该更新适用于任何
    以前的 2.xx 版本。 如果升级
    从 v1.xx 版本开始,请下载并
    我...
    下载 XISMuS
  • 更多 ”

Linux 命令

Ad