2012-01-25 14 views
2

私はCGI.pmを使って簡単なWebページを持っているこれは私が何をすべきかです:PerlのCGI.pmエンコーディング - 「E」の間違ったエンコーディング

  1. 私は任意のPerlのCGI.pm機能と使用呼び出しますチェコの文字 "ě"はテキストフィールドの値、radio_groupのラベル、その他のものは取得しています > "ě"の埋め込み

  2. このページは全体がutf8(<メタ名= "charset" content = "utf-8"/>)。これは

    print '<textfield value="ěěěě" >'; 
    
  3. に動作します。特に以来、それゆえ私はポジティブだ - それが問題を引き起こしてCGI.pmである必要があります...私は私のscirptの先頭に

    use utf8; 
        utf8::decode($textfield_value); 
    

    を入れてみました、それは固定しますCGI.pmの問題ですが、スクリプト内の他のキャラクタ(すべてのキャラクターが印刷されているもの)を面白く見せてくれます。

アイデア???

+1

Crosspost http://perlmonks.org/index.pl?node_id=949883 – daxim

答えて

1

フォームフィールドのaccept-charset属性をUTF-8に設定しますか?

<form action="/..." accept-charset="UTF-8"> 

これはあなたの問題を解決するのに十分ではないかもしれませんが、UTF8エンコードにサーバーに送信されますフォームデータをクライアントブラウザを強制する必要があることが多いです。

0

εを8進または16進エスケープに置き換えてみましたか?残念ながら、文字のHTMLコードはないようです。

+0

コードポイントを見つける: 'perl -CA -E'say sprintf"%04X "、ord shift 'ě'。 -CAフラグはperl([@ ARGVはUTF-8である])(http://perldoc.perl.org/perlrun.html#*-C-%5b_number%2flist_%5d*)を指示します。したがって、HTMLエンティティとして '&#x011B; 'になります。 –

関連する問題