2016-10-05 6 views
1

Когда я набираю русское слово на вкладке нижеприведенной программы Perl и нажимаю «Отправить», я вижу вместо них русские буквы.Как передать параметр HTTP с страницы CP1251 на обработчик UTF-8?

Как передать данные со страницы, закодированной как CP1251, в сценарий обработчика, который нуждается в строках UTF-8? (Приведенный ниже сценарий является простым примером такой ситуации.)

#!/usr/bin/perl 

use strict; 
use warnings; 

use CGI qw/param/; 

if (param('x')) { 
    print "Content-Type: text/plain; charset=utf-8\n\n"; 
    print "[[".param('x')."]]"; 
} else { 
    print "Content-Type: text/html; charset=windows-1251\n\n"; 
    print '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>'; 
    print "<form><input name='x'/><input type='submit'/></form>"; 
} 

ответ

1

можно эфиру преобразовать значение param() из CP1251 в UTF-8 или добавить accept-charset='utf-8' атрибут <form> элемента.

+1

'accept-charset' кажется лучшей идеей. Также см. Http://stackoverflow.com/a/3721098/1331451 – simbabque