いまさら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