use Encode - yokohama.pm#6 x perl-casual#3

Post on 28-Jan-2015

110 views 1 download

Tags:

description

 

Transcript of use Encode - yokohama.pm#6 x perl-casual#3

use Encode;

@xaicron

2010/07/23yokohama.pm over perlcasual

2010年7月24日土曜日

自己紹介

• Yuji Shimada / 嶋田 裕二

• twitter: @xaicron

• work: DeNA

2010年7月24日土曜日

今日言いたいことは

2010年7月24日土曜日

decodeしていじって

encodeする

2010年7月24日土曜日

ってことです!!

2010年7月24日土曜日

WARNING!!

2010年7月24日土曜日

• require jcode.pl;

• use encoding ‘euc-jp’;

• use open IN => ‘:encoding(euc-jp)’;

• ( use Jcode )

2010年7月24日土曜日

レガシーなコード

2010年7月24日土曜日

忘れてください

2010年7月24日土曜日

what’s Encode?

2010年7月24日土曜日

マルチバイト文字列を扱うときのデファクト

2010年7月24日土曜日

バイト文字列をperlの内部文字列(flagged utf8)にしたり

2010年7月24日土曜日

その逆をしたりする

2010年7月24日土曜日

そんな小粋なモジュールだよ!

2010年7月24日土曜日

なにがうれしいの?

2010年7月24日土曜日

octet base じゃなくcharacter base のコーディングが出来るということ

2010年7月24日土曜日

Core Module

2010年7月24日土曜日

maintainer is dankogai

2010年7月24日土曜日

2010年7月24日土曜日

WARNING!!

2010年7月24日土曜日

perl 5.8.1 以上出来れば 5.8.8 以上を

使うこと

2010年7月24日土曜日

2010年7月24日土曜日

其の壱

2010年7月24日土曜日

外部から来たものはすべて decode

すべし!!

2010年7月24日土曜日

外部入力の例• 引数(@ARGS の中身)

• STDIN, ファイル読み込み

• DBからとってきたデータ

• HTTPとかでとってきたデータ

• etc..

2010年7月24日土曜日

とにかく入力と思われるものすべて

2010年7月24日土曜日

其の弐

2010年7月24日土曜日

外部に出力するものはすべて encode

すべし!

2010年7月24日土曜日

外部出力の例• STDOUT, STDERR

• ファイル書き込み

• DBに書き込むデータ

• レンダリングするHTML

• etc..

2010年7月24日土曜日

これを守ると幸せになれます!!

2010年7月24日土曜日

• decode

• 「任意の」バイト文字列を内部文字列に変換

• encode

• 内部文字列を「任意の」バイト文字列に変換

2010年7月24日土曜日

バイト文字列とは

• 我々が文字列だと思っているものは、実はバイトの連続だ!

• 適切なキャラセットでエディターとかがマッピングしてるから文字に見えるよ!

2010年7月24日土曜日

バイト文字列とは

• プログラム的にはバイト文字列はアレゲ

• 一文字を一文字として扱えない(length

でバイト数が帰ってくる)

2010年7月24日土曜日

内部文字列とは• 一文字がプログラム的に一文字として扱われる状態

• length で文字数が帰ってくる

• 正規表現とかsubstrとかsplitとかウマーな状態

2010年7月24日土曜日

$ perl -E ‘say length “あいうえお”’

15 $ perl -MEncode -E ‘say length decode utf8 => “あいうえお”’

5

2010年7月24日土曜日

Encodeの使い方use strict;use warnings;use Encode;

my $str = decode utf8 => “だんこがい”;

# do something...print encode utf8 => $str;

2010年7月24日土曜日

簡単ですね!

2010年7月24日土曜日