【问题标题】:Perl - Validate Chinese character input from web page form?Perl - 验证网页表单中的汉字输入?
【发布时间】:2018-08-24 20:31:35
【问题描述】:

我的 Perl 脚本接受并处理来自网页表单中文本字段的输入。它是为网页的英文版编写的,效果很好。

还有一个中文版的页面(一个单独的页面,不是同一页面上的两种语言),现在我需要我的脚本来处理它。此页面上的用户输入应为中文。

预计需要在 UTF-8 中工作,我补充说

use utf8;

这在英文页面上仍然可以正常工作。

但是,例如,为了定义一个使用中文字符进行比较的字符串变量,我必须使用 utf-8 编码保存 Perl 脚本本身。一旦我这样做,我就会得到可怕的 500 服务器错误。

很明显,我要解决这个问题,任何有用的方向将不胜感激/

谢谢。

编辑 - 请参阅下面我的澄清帖子。

【问题讨论】:

  • use utf8 只会告诉 Perl 脚本中的文本是 UTF-8 编码的。为了帮助你,你需要展示你的一些代码。中文页面的编码是什么?您如何将表单输入从表单获取到脚本?你的服务器软件是什么?脚本如何与之交互?
  • 您需要显示您的 500 错误详细信息
  • 感谢您的反馈。我想我误导了人们。请参阅下面的说明。

标签: perl utf-8


【解决方案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.....

检查

【讨论】:

  • 感谢您的回复,但我认为我误导了这个问题。你能在下面看到我的澄清吗?谢谢。
  • 您的回复让我想到了大致正确的方向并进行了更多研究。谢谢。还没有完全解决,但我会开始一个新的 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。

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2017-06-15
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    相关资源
    最近更新 更多