1

さまざまなエンコーディングの「グレムリン」が、Perlプログラム内のデータベースからのフォーム入力とデータに混在するという問題が発生しています。最初、私はデコードしていませんでした。スマートな引用符などは、複数のぎこちない文字を生成していました。しかし、UTF-8としてすべてを盲目的にデコードすると、古いWindows-1252コンテンツが疑問符で埋められていました。

そのため、Encode :: Detector :: Detectorとdecode()関数を使用して、SQLデータベースからのデータとともにすべてのPOSTおよびGET入力を検出およびデコードしました(デコードプロセスは、おそらくそれぞれ10〜20文字のテキストで発生します)ページが生成される時間)。これは問題を解決しているように見えるので、UTF-8、ASCII、およびWindows-1252のコンテンツはすべてUTF-8出力として正しく表示されます(HTMLヘッダーで指定したとおり)。

    my $encoding_name = Encode::Detect::Detector::detect($value);   
    eval { $value = decode($encoding_name, $value) };

私の質問はこれです:このプロセスはどれくらいのリソースが重いですか?減速に気づかなかったので、これがどのように機能するかについては満足していると思いますが、これを行うためのより効率的な方法があれば、それを聞いてうれしいです。

4

1 に答える 1

3

答えはアプリケーションに大きく依存するため、発生した「費用」の許容範囲はあなたの要求です。

オーバーヘッドを定量化する最良の方法は、コードをプロファイリングすることです。あなたはDevel::NYTProfスピンをしたいかもしれません。

Tim BunceのYAPC::EUプレゼンテーションでは、モジュールに関する詳細が提供されています。

于 2012-09-01T19:30:15.880 に答える