Perl и Unicode Олег Алистратов Perl Mova – 2010. Зачем нужен Unicode?

Презентация:



Advertisements
Похожие презентации
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4.
Advertisements

УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
Untitled-4 copy
© 2006 Cisco Systems, Inc. All rights reserved. CIPT1 v Deployment of Cisco Unified CallManager Release 5.0 Endpoints Configuring Cisco Unified CallManager.
Microsoft TechDays Черкас Дмитрий Специалист по технологиям Microsoft.
Microsoft TechDays Илья Рудь MCT ЦКО «Специалист»
© 2005 Cisco Systems, Inc. All rights reserved.INTRO v Operating and Configuring Cisco IOS Devices Configuring a Router.
© 2006 Cisco Systems, Inc. All rights reserved. BSCI v Manipulating Routing Updates Implementing Advanced Cisco IOS Features: Configuring DHCP.
1 Учебный курс Основы Web-технологий Лекция 6 CGI и Perl. SSI и Cookies кандидат технических наук Павел Брониславович Храмцов
© 2007 Cisco Systems, Inc. All rights reserved.SNRS v Adaptive Threat Defense Configuring Cisco IOS Firewall Authentication Proxy.
Cisco Internetwork Troubleshooting Creating End-System Network Configuration Documentation © 2005 Cisco Systems, Inc. All rights reserved. CIT v
S15-1 PAT318, Section 15, March 2005 SECTION 15 MSC.PATRAN FILES.
© 2003, Cisco Systems, Inc. All rights reserved. CSVPN Lesson 7 Configure the Cisco VPN Firewall Feature for IPSec Software Client.
Microsoft TechDays Алексей Богомолов MCP, MCTS
© 2006 Cisco Systems, Inc. All rights reserved. CIPT1 v Administration of Cisco Unified CallManager Release 5.0 Configuring Cisco Unified CallManager.
© 2006 Cisco Systems, Inc. All rights reserved. CVOICE v VoIP Signaling and Call Control Configuring SIP.
© 2005 Cisco Systems, Inc. All rights reserved. IPTX v Configuring Additional Cisco CallManager Express Features Configuring Cisco CallManager Express.
© 2006 Cisco Systems, Inc. All rights reserved.ONT v Implement Wireless Scalability Configuring Encryption and Authentication on Lightweight Access.
Unit 2 Users Management. Users Every user is assigned a unique User ID number (UID) UID 0 identifies root User accounts normally start at UID 500 Users'
© 2005 Cisco Systems, Inc. All rights reserved.INTRO v Managing Your Network Environment Managing Cisco Devices.
Транксрипт:

Perl и Unicode Олег Алистратов Perl Mova – 2010

Зачем нужен Unicode?

Unicode в.ru случайных сайтовTop 350* сайтов * По данным GoalEurope / Rating of Russian Web 2.0 Companies 2008

История

Трафик: text/plain Увеличение размера кириллического текста на 79%

Трафик: text/html Увеличение размера HTML с русским текстом на 14% Медианный размер 100 тыс. случайно выбранных русскоязычных страниц

Трафик: gzipped

Производительность: платформы Mobile Intel® Celeron® 2.13 GHz, RAM 1 Gb Microsoft® Windows® XP SP3 ActiveState Perl v Intel® Core2 Duo 2.80 GHz, RAM 2 Gb Ubuntu 9.10 Karmic Koala linux server perl v Intel® Xeon® 3.00 GHz × 2, RAM 32 Gb FreeBSD® 6.2-RELEASE-p3 perl v5.8.8

Строковые функции length(…) index(…) substr(…) 107 % 112 % 105 … 172 %

Регулярные выражения /a/ /(.)\1/g /[0-9]/ 120 … 600 % 115 % %

Регулярные выражения use re 'debug'; $a =~ /\d/; DIGIT $a =~ /[0-9]/; ANYOF[0-9] $a =~ /(?:0|1|2|3|4|5|6|7|8|9)/; TRIEC-EXACT[0-9]

Исходный файл в UTF-8 { use utf8; my $a = 'Привет!'; print length($a), "\n"; } > 7 { no utf8; my $a = 'Привет!'; print length($a), "\n"; } > 13

Символы и байты use utf8; # or use encoding "cp1251"; my $a = 'Привет!'; print length($a), "\n"; use bytes; print length($a), "\n"; > 7 > 13 use encoding::warnings 'FATAL';

Исключения chdir, chmod, chown, chroot, exec, link, lstat, mkdir, rename, rmdir, stat, symlink, truncate, unlink, utime, -X %ENV glob ( ) open, opendir, sysopen qx/…/, system readdir, readlink

Encode use utf8; use Encode; my $x = 'a b'; $x = Encode::encode( 'windows-1251', $x, Encode::FB_HTMLCREF ); print $x, "\n"; > a → b

Символы my $copy = "\x00a9"; my $copy = "\x{00a9}"; my $copy = pack('U', 0x00a9); print $copy; > ©

Регулярные выражения my $copy = '©'; $copy =~ /\x{00a9}/; $copy !~ /\p{Uppercase}/; $copy =~ /\p{Other_Symbol}/; $copy =~ /\p{InLatin-1_Supplement}/; $copy !~ /\p{InCyrillic}/; $copy !~ /\p{BidiClass:R}/;

IO open(my $fh, "

LWP use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $response = $ua->get(" if ($response->is_success) { my $content = $response->decoded_content; if (defined($content)) { #... }

Базы данных MySQL $dbh->do('SET NAMES utf8'); $dbh->{mysql_enable_utf8} = 1; PostgreSQL $dbh->do("SET client_encoding TO 'UTF8'"); $dbh->{pg_enable_utf8} = 1; SQLite $dbh->{sqlite_unicode} = 1;

Конвертация БД $ mysqldump db_name > dump.sql $ iconv -f cp1251 -t utf-8 dump.sql > newdump.sql $ sed -i.bak "s/cp1251/utf8/" newdump.sql $ mysql < newdump.sql

perl 5.12 Расширена поддержка классов и свойста символов до стандарта Unicode use charnames ':full'; print "\N{GREEK SMALL LETTER ALPHA}"

Спасибо! Олег Алистратов