Perl - 验证网页表单中的汉字输入?
Posted
技术标签:
【中文标题】Perl - 验证网页表单中的汉字输入?【英文标题】:Perl - Validate Chinese character input from web page form? 【发布时间】:2018-08-24 20:31:35 【问题描述】:我的 Perl 脚本接受并处理来自网页表单中文本字段的输入。它是为网页的英文版编写的,效果很好。
还有一个中文版的页面(一个单独的页面,不是同一页面上的两种语言),现在我需要我的脚本来处理它。此页面上的用户输入应为中文。
预计需要在 UTF-8 中工作,我补充说
use utf8;
这在英文页面上仍然可以正常工作。
但是,例如,为了定义一个使用中文字符进行比较的字符串变量,我必须使用 utf-8 编码保存 Perl 脚本本身。一旦我这样做,我就会得到可怕的 500 服务器错误。
很明显,我要解决这个问题,任何有用的方向将不胜感激/
谢谢。
编辑 - 请参阅下面我的澄清帖子。
【问题讨论】:
use utf8
只会告诉 Perl 脚本中的文本是 UTF-8 编码的。为了帮助你,你需要展示你的一些代码。中文页面的编码是什么?您如何将表单输入从表单获取到脚本?你的服务器软件是什么?脚本如何与之交互?
您需要显示您的 500 错误详细信息
感谢您的反馈。我想我误导了人们。请参阅下面的说明。
【参考方案1】:
正确处理utf8
:
use strict; use warnings;
use utf8;
use open(IO => ':encoding(utf8)');
binmode $_, ":utf8" for qw/STDOUT STDIN STDERR/;
open(my $fh, '<:utf8', '/file/path'); # if you need a file-handle
# code.....
检查
why-does-modern-perl-avoid-utf-8-by-default perluniintro【讨论】:
感谢您的回复,但我认为我误导了这个问题。你能在下面看到我的澄清吗?谢谢。 您的回复让我想到了大致正确的方向并进行了更多研究。谢谢。还没有完全解决,但我会开始一个新的 Q,因为这个问题不是真的。【参考方案2】:很抱歉 - 我认为我包含太多信息而未能很好地表达我的问题。
问题是 - 如果我将脚本保存为 ANSI 格式并将其上传到服务器,它对于英文页面就可以正常工作。本来想在脚本中使用汉字,我把它保存为UTF-8格式并重新上传,突然英文页面抛出500。
我使用 Hello World 脚本进行了测试:
#!/usr/bin/perl -T
use strict;
use warnings;
print "Content-type: text/html\n\n";
print "Hello, world!\n";
保存为 ANSI 时工作正常 - 保存为 UTF8 时失败 500。
【讨论】:
以上是关于Perl - 验证网页表单中的汉字输入?的主要内容,如果未能解决你的问题,请参考以下文章