如何将HTTP参数从CP1251页面传递到UTF-8处理程序?

时间:2016-10-05 15:02:54

标签: perl encoding character-encoding cgi param

当我在下面的Perl程序的输入中键入俄语单词并单击“提交”时,我看到的是废话而不是俄语字母。

如何将数据从编码为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 个答案:

答案 0 :(得分:1)

我可以将exception ThreadDeath的值从CP1251转换为UTF-8或将param()属性添加到accept-charset='utf-8'元素。