我有utf8数据,通过以下方式传递给我以摘要::SHA:
my $sha1=Digest::SHA->new;
foreach (@fields ) { $sha->add($record) }
print $sha1->hexdigest;但是,我会有意想不到的行为,每次我在http://metacpan.org/pod/Digest::SHA上看到不同的摘要时,我在UTF8上看到使用digest会产生副作用,我尝试了以下几种方法,但这两种方法都不管用:
{use bytes;
foreach (@fields ) { $sha->add($record) }
print $sha1->hexdigest;
}和
use Encode qw(encode_utf8);
foreach (@fields ) { $sha->add((encode_utf8($record)) }
print $sha1->hexdigest;如有任何帮助,将不胜感激。
发布于 2014-01-23 19:00:03
没有看到您的实际数据(例如use Data::Dumper; $Data::Dumper::Useqq=1; print Dumper $record;)和您期望的SHA,就很难提供帮助。
尽管如此,您可能会发现获得一致SHA的最简单方法是强制json编码只输出ASCII,并确保它始终以一致的顺序放置散列元素:
use JSON;
$serialized = JSON::to_json( $data_structure, { 'ascii' => 1, 'canonical' => 1 } );https://stackoverflow.com/questions/21315985
复制相似问题