use encode - yokohama.pm#6 x perl-casual#3
DESCRIPTION
TRANSCRIPT
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日土曜日
続きはWebで!http://perl-users.jp/articles/advent-calendar/2009/casual/
10.html
2010年7月24日土曜日