まず、PP が指摘しているように、ソース ファイルが UTF-8 でエンコードされている場合、use utf8;
Perl がそれを認識し、その中の文字列リテラルを正しく解釈できるようにする必要があります。
次に、データベース内のテキストも正しくエンコードされていることを確認します。これの詳細はデータベースによって異なりますが、たとえば MySQL の場合、テキスト列にutf8
文字セットとutf8_unicode_ci
照合(または必要に応じて適切な国内照合スキーム) があることを確認し、mysql_enable_utf8
オプションを含めることがおそらく最善の方法です。 DBI を使用してデータベースに接続する場合。
3 番目に、I/O ストリームも UTF-8 でエンコードする必要があることを Perl に伝える必要があります。次のように、 を使用してこれを行うことができますbinmode()
。
binmode STDOUT, ':utf8';
最後に、ブラウザに UTF-8 テキストを送信していることを伝える必要もあります。(この部分が実際の問題だと思いますが、他のすべての手順も実行すると、完全に Unicode 対応のワークフローを実現できます。) これを行うには、HTTP ヘッダーを送信します。
Content-Type: text/html; charset=UTF-8
および/または同等の HTML メタ タグ:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
または、HTML5 では単純に:
<meta charset="utf-8">