2012-01-25 36 views
2

我有一個使用CGI.pm這是一個簡單的網頁是我做的:Perl的CGI.pm編碼 - 錯誤的編碼爲「E」

  1. 當我打電話所有Perl CGI.pm功能和使用捷克字符「E」爲一個文本框的值,radio_group或其他任何東西,我得到的標籤>‘E’

  2. 這是怪異的極端的insetad - 因爲整個頁面是UTF8(< META NAME =‘字符集’ content =「utf-8」/ >)。特別是因爲這個工程

    print '<textfield value="ěěěě" >'; 
    
  3. 因此我肯定 - 它必須CGI.pm引起的問題......我試圖把

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

    我scirpt的開始,它固定(那些regulary印刷)的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

您是否嘗試過用他們的八進制或十六進制轉義更換電子的?不幸的是,這個角色似乎沒有HTML代碼。

+0

尋找代碼點:'perl -CA -E's sprintf「%04X」,ord shift'ě'。 -CA標誌告訴perl ['@ ARGV'是UTF-8](http://perldoc.perl.org/perlrun.html#*-C-%5b_number%2flist_%5d*)。所以它會作爲一個HTML實體而成爲'&#x011B;'。 –