关于一个guestbook的请教

关于一个guestbook的请教

关于一个guestbook的请教
我是perl的初学者,
在windows平台下写了个小小的来宾手册的程式。
在localhost上测试的时候当留言为英文时都能正常显示,但是当输入中文的时候却显示的是相应汉字的对应编码。如 & # 再加上一串数字 的形式。
附代码如下,急盼求教,万分感谢!
#!C:/usr/bin/perl.exe -Tw
use strict;
use CGI qw/:standard escapeHTML/;
use Fcntl qw/:flock/;
$|++;

# Config
my $GUESTBOOK = './guestbook.txt';
my $TITLE = 'Guestbook'; # Title of guestbook
my $MAX_MSGS = 5;     # Maximum number of messages displayed
my $MAX_NAME = 50;    # Maximum length of name field
my $MAX_EMAIL = 50;    # Maximum length of email field
my $MAX_COMMENTS = 300;  # Maximum length of comments field
# End Config

# Print header
print header,
   start_html(-title=>$TITLE, -bgcolor=>'white'),
   h1($TITLE);

# Get action
my $action = param('action');

# Check action
if ($action =~ /^sign/i) {
  # Sign guestbook
  sign_guestbook();
} elsif ($action =~ /^view/i) {
  # View guestbook
  view_guestbook();
} else {
  print_form();
}

# End html
print end_html;

#######################################

sub print_form {
  print hr,
     start_form,
     '<STRONG>Name: </STRONG>',
     br,
     textfield(-name=>'name', -size=>50),
     br,
     '<STRONG>E-Mail: </STRONG>',
     br,
     textfield(-name=>'email', -size=>50),
     br,
     '<STRONG>Comments: </STRONG>',
     br,
     textarea(-name=>'comments', -rows=>10,
          -columns=>50, -wrap=>1),
     br,
     submit(-name=>'action', -value=>'Sign Guestbook'),
     submit(-name=>'action', -value=>'View Guestbook'),
     reset,
      end_form;
      

}

sub sign_guestbook {
  my $time = localtime;
  my $name = param('name');
  my $email = param('email');
  my $comments = param('comments');

  # Check that name was entered
  if ($name eq '' or $name =~ /^\s+$/) {
    print_error('You must enter a name');
  }

  # Check lenghts of user input
  $name = substr($name, 0, $MAX_NAME);
  $email = substr($email, 0, $MAX_EMAIL);
  $comments = substr($comments, 0, $MAX_COMMENTS);

  # Remove leading/trailing white space
  $comments =~ s/^\s+//;
  $comments =~ s/\s+$//;

  # Escape HTML
  $name = escapeHTML($name);
  $email = escapeHTML($email);
  $comments = escapeHTML($comments);

  # Deal with line breaks
  $comments =~ s/(?:\015\012?|\012)/<BR>/g;

  open(FILE, ">>$GUESTBOOK") or
   die "Can't open $GUESTBOOK: $!\n";
  flock(FILE, LOCK_EX); # Exclusive lock for writing

  print FILE $time, ':::', $name, ':::', $email, ':::', $comments, "\n";

  flock(FILE, LOCK_UN); # Unlock the file
  close FILE;

  # Check size of message file
  max_msgs();

  my $script = url();
  print hr,
     'Thank you for signing my guestbook',
     p,
     a({-href=>"${script}?action=view"},'View Guestbook');

}

sub view_guestbook {
  my $script = url();

  print a({-href=>$script}, 'Sign Guestbook'),
     hr;

  # Check size of message file
  max_msgs();

  # Read message file
  open(FILE, "$GUESTBOOK") or
   die "Cannot open $GUESTBOOK: $!\n";
  flock(FILE, LOCK_SH); # Shared lock for reading

  my @messages = <FILE>;

  flock(FILE, LOCK_UN); # Unlock the file
  close (FILE);

  @messages = reverse (@messages);
  foreach my $item (@messages) {
    my($time, $name, $email, $comments) = split(':::', $item);

    # Format fields
    my $f_name = "<STRONG>$name</STRONG>";
    my $f_email = "<A HREF=mailto:$email>$email</A>";

    # Output a record
    print "$time - $f_name - $f_email",
       p(blockquote($comments)),
       hr;
  }

}

sub max_msgs {
  # If more than MAX_MSGS messages, delete oldest

  # Read message file
  open(FILE, "$GUESTBOOK") or
   die "Cannot open $GUESTBOOK: $!\n";
  flock(FILE, LOCK_SH); # Shared lock for reading

  my @messages = <FILE>;

  flock(FILE, LOCK_UN); # Unlock the file
  close (FILE);


  if(@messages > $MAX_MSGS) {
     open(FILE, ">$GUESTBOOK") or
      die "Cannot open $GUESTBOOK: $!\n";
     flock(FILE, LOCK_EX); # Exclusive lock for writing

     shift @messages while @messages > $MAX_MSGS;

     print FILE @messages;

     flock(FILE, LOCK_UN); # Unlock the file
     close FILE;
  }


}
  
sub print_error {
  my $error = shift;
  my $script = url();
  print hr,
     h2('Error'),
     p($error),
     a({href=>$script}, 'Try Again'),
     end_html;
  die $error;
}




   

对不起我已经会了
刚才自己又琢磨了下,估计是自己的charset没有设置好,于是把默认的print header改为
print "Content-Type: text/html;charset=gb2312\n\n",
至此问题就解决了。
这个问题是不是很菜啊,没办法我是初学者,全是自己瞎摸着学的,希望能多得到大家的指点。
也希望我的这个错误能给其他的初学者一点启示。