1N/A#$VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; 1N/A# HZ is a combination of ASCII and escaped GB, so we implement it 1N/A# with the GB2312(raw) encoding here. Cf. RFCs 1842 & 1843. 1N/A# not ported for EBCDIC. Which should be used, "~" or "\x7E"? 1N/A # EBCDIC should need ascii2native, but not ported. 1N/A else {
# encounters an invalid escape, \x80 or greater 1N/A else {
# GB mode; the byte ranges are as in RFC 1843. 1N/A $_[
1] =
'' if $
chk;
# needs_lines guarantees no partial character 1N/A # $trm is the first of the pair '~~', then 2nd tilde is to be removed. 1N/A # XXX: Is better C<$src =~ s/^\x7E// or die if ...>? 1N/A else {
# encounters an invalid escape, \x80 or greater 1N/A else {
# GB mode; the byte ranges are as in RFC 1843. 1N/A return '';
# terminator not found 1N/A no warnings 'utf8';
# $str may be malformed UTF8 at the end of a chunk. 1N/A $
tmp =~ s/~/~~/g;
# escapes tildes 1N/A if (
length $
tmp ==
2) {
# maybe a valid GB char (XXX) 1N/A elsif (
length $
tmp) {
# maybe FALLBACK in ASCII (XXX) 1N/A else {
# if $str is malformed UTF8 *and* if length $str != 0. 1N/A # The state at the end of the chunk is discarded, even if in GB mode. 1N/A # That results in the combination of GB-OUT and GB-IN, i.e. "~}~{". 1N/A # Parhaps it is harmless, but further investigations may be required... 1N/AEncode::CN::HZ -- internally used by Encode::CN