我在这里有一个问题,我使用perl通过输入文本框输入一些字符并保存到数据库中。在保存到数据库之前,所有值都将通过一个函数来运行escapeHTML。问题是这个escapeHTML函数正在将我的一些中文字符转换为HTML代码,如例2和3所示。我只是想知道为什么escapeHTML只影响一些unicode字符而不是全部?
希望有人可以帮助我。
谢谢
func doSomething(value: Int?) {
switch value {
//case 2: // Not allowed
case 2?:
print("found two")
case nil:
print("found nil")
case let x:
print("found a different number: \(x)")
}
}
答案 0 :(得分:1)
HTML编码的首选方式是HTML::Entities
仅对默认的不安全字符进行编码:
$encoded = encode_entities($string);
编码<和>,但没有&和其他人:
$encoded = encode_entities($string,'<>');
编码非纯ASCII:
$encoded = encode_entities($input, '^\n\x20-\x25\x27-\x7e');
escapeHTML()
不是CGI documentation的一部分,我认为它不是用于从CGI模块外部使用的。如果你看一下CGI源代码,它就会使用HTML :: Entities:
$ENCODE_ENTITIES = q{&<>"'};
sub escapeHTML {
require HTML::Entities;
# hack to work around earlier hacks
push @_,$_[0] if @_==1 && $_[0] eq 'CGI';
my ($self,$toencode,$newlinestoo) = CGI::self_or_default(@_);
return undef unless defined($toencode);
my $encode_entities = $ENCODE_ENTITIES;
$encode_entities .= "\012\015" if ( $encode_entities && $newlinestoo );
return HTML::Entities::encode_entities($toencode,$encode_entities);
}
看到这个源代码,我想知道它为什么会进行任何Unicode编码。