初めてutf8を使いましたが、文字の扱いが全く分からなくてエラーがいっぱい出ます。

CGIとして動作させてます。
入力も出力も記述も全部utf8にしてます。

記述の先頭には use utf8 を書いてますが、なんかこれを書くとエラーが増える気がします。
でも書かなかったら書かなかったで、、require とかそうゆうのをやった時におかしくなります。


あとURLエンコードとデコードのやりかたが全くわかりません。
これもこれで use utf8 がある時とない時でエラーの挙動が違います。

#▼以下の記述は use utf8 をすると挙動がおかしくなります。
use strict;
use URI::Escape;

print "--- use URI::Escape ---\n";
my $unescape = qq(<h2>"hoge"&' bar '</h2>);
my $escape1 = uri_escape($unescape);
print $escape1, "\n";
print uri_unescape($escape1), "\n";