Thread Wide character in Compress::Raw::Zlib::crc32
(16 answers)
Opened by John Doe at 2011-05-23 12:50 Guest John Doe $content ist dekodierter Text, die CRC ist aber nur fuer Bytes definiert. Also musst du von Text nach Bytes konvertieren. Dieser Vorgang heist bei Perl "encode". Code (perl): (dl
)
1 2 3 use Encode qw/encode_utf8/; use Compress::Raw::Zlib; my $crc = sprintf( "%x", Compress::Raw::Zlib::crc32( encode_utf8 $content ) ); Der Ansatz mit "use bytes;" ist schlecht, weil er nicht explizit rueberbringt, mit welcher Zeichenkodierung du arbeiten willst. Ausserdem gilt er nur im lexikalischen Scope, die Funktion die du aufrufst ist aber in einem anderen Scope, daher hat 'use bytes;' in dem Fall keine Auswirkung (use bytes; bewirkt nur, dass Funktionen wie substr() Byte-Semantik annehmen, es encoded nicht automatisch jeden Textstring in einen Bytestring). |