develooper Front page | perl.perl5.porters | Postings from February 2001

Re: IV preservation (was Re: [PATCH 5.7.0] compiling on OS/2)

February 16, 2001 14:41
Re: IV preservation (was Re: [PATCH 5.7.0] compiling on OS/2)
Message ID:
Graham Barr <> writes:
>On Fri, Feb 16, 2001 at 09:47:39PM +0000, Nick Ing-Simmons wrote:
>> Case C was Graham's LDAP case. It relied on perl producing UTF8 encoded 
>> form for 128..255 and then did 'use byte' to peak at it.
>> It broke when 5.6+ decided to keep 128...255 as 'byte' anyway.
>> The right way to do this is to export the trivial XS code which 
>> does an upgrade and then turns off the flag. (As current Encode does.)
>Right, What I need is a function that when I pass it a string
>it will return the bytes that would be the utf-8 encoding. Which
>in this case is just a downgrade.

Current Encode.xs has

MODULE = Encode		PACKAGE = Encode	PREFIX = sv_


SV *	sv

Which exports sv.c's 

=for apidoc sv_utf8_encode

Convert the PV of an SV to UTF8-encoded, but then turn off the C<SvUTF8>
flag so that it looks like bytes again. Nothing calls this.


Perl_sv_utf8_encode(pTHX_ register SV *sv)

Likewise for utf8_decode.

Which sadly have "in-place" semantics rather than function semantics,

so you have to say:

 utf8_encode($encoded = $str);

rather than LISP-ish:

 $encoded = utf8_encode($str); 

Nick Ing-Simmons Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About