いまさらencode/decodeとflagged utf8の話

すでにさまざまな方が論じられておりますが、ちょいとややこしくて忘れられやすいのであらためて。

とりあえず至言をコピペ

入り口で decode して、内部ではすべて flagged utf8 で扱い、出口で encode する。これがすべてです!とにかくこの基本方針をまもっていれば幸せになれます。

http://blog.64p.org/entry/20080408/1207619640
[request]
入力値はすぐdecode
…
なにかしらの処理
…
DBから引いたらすぐdecode
…
なにかしらの処理
…
出口付近でencode
[response]

in/outのdecode/encodeはWAFが肩代わりしてくれることが多いので、レスポンスを返すときにはちゃんとdecodeした文字列を返してやりましょう。

ref:
Perl: 文字コードとutf8フラグについて - @bayashi Wiki
Perl の文字列エンコーディングの話 | Hachioji.pm 日めくりテックトーク
Perl で utf8 化けしたときにどうしたらいいか - blog.64p.org