Perl - 如何从Web表单中验证汉字输入?

时间:2018-03-16 21:55:37

标签: perl utf-8

我的网页使用Charset UTF-8允许在textarea表单字段中输入中文字符。我想测试输入是否包含某个字符。我写了一个测试脚本,看看Perl将如何处理中文输入。当存在已知匹配时,它没有找到匹配。

这是我的测试表格:

<!DOCTYPE html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>

    <form method="post" action="http://www.my_domain.com/cgi-bin/my_test_script.pl">
          <textarea name="user_input" rows="" cols=""></textarea>
          <input type="submit" name="submit" value="submit">
    </form>

  </body>
</html>

这是我的代码:

#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser); 
use utf8;

print "Content-type: text/html; charset=UTF-8\n\n";
print "<meta http-equiv='content-type' content='text/html;charset=UTF-8'>";

my $query = new CGI;
my $msg = $query->param('user_input');
chomp $msg;
my $msg_code = ord($msg);

print "<p> Message was: ".$msg."\n";
print "<p> Message Code is: ".$msg_code."\n";

my $char_from_code_point = "\N{U+89C6}";
my $char_from_code_point_reverse_code = ord($char_from_code_point);

print "<p> char_from_code_point= ".$char_from_code_point."\n";
print "<p> char_from_code_point_reverse_code =     ".$char_from_code_point_reverse_code."\n";

if ($msg =~ m/$char_from_code_point/) {
  print "<p>Matched!\n";
  }
else {
  print "<p> NOT matched\n";
}

以下是提交正确字符的输出:

Message was: 视

Message Code is: 232

char_from_code_point= 视

char_from_code_point_reverse_code = 35270

NOT matched 

有人可以指出我做错了吗?

谢谢。

0 个答案:

没有答案