2

我有一个在本地运行良好但在服务器上失败的脚本。

它显示不间断的空格符号

   

作为

?

打印到标准输出时。

在页面的解析中,如果我尝试用

s/\&nbsp\;//g

什么都没有发生,也没有摆脱问号

s/\?//g

似乎无论如何都会坚持下去。

奇怪的是,在本地运行脚本时这不是问题。

但是,本地计算机和服务器上的一个问题是撇号(在我正在抓取的 HTML 中表示为尖锐符号

´

始终表示为问号

?

即使明确尝试

s/´/'/g

困惑,请帮助。

4

2 回答 2

2

将尝试像这样删除它:

无间断空间

my $non_break_space = "\x{A0}";
$non_break_space =~ s/\xA0/ /g;

尖锐的口音

my $acute = "\x{B4}";
$acute =~ s/\xB4/ /g;

您可以使用此站点fileformat.info获取有关 unicode 字符及其不同值的更多信息。

于 2012-11-24T12:39:26.427 回答
0

由于您使用标记了您的问题,我假设您正在使用Mojolicious。尝试在您的服务器上运行此测试脚本并向我们展示结果:

#!/usr/bin/env perl

use utf8;
use Mojolicious::Lite;
use Test::More tests => 3;
use Test::Mojo;

get '/test_html' => {text => "<p>Hello&nbsp;&nbsp;World&acute;!</p>"};
my $t = Test::Mojo->new;

$t->get_ok('/test_html')->status_is(200)->text_is('p', 'Hello World´!');

在这里工作正常:

1..3
ok 1 - get /test_html
ok 2 - 200 OK
ok 3 - exact match for selector "p"
于 2012-11-24T16:38:43.557 回答