Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

7bit ascii equal parity posing problems

by bear0053 (Hermit)
on Mar 02, 2004 at 21:34 UTC ( #333378=perlquestion: print w/replies, xml ) Need Help??
bear0053 has asked for the wisdom of the Perl Monks concerning the following question:

fellow monks i have come across a situation that baffeled me.

i have an encryption object running from win32 that returns binary data in 7 bit Ascii (verified in .NET). When perl gets the property from the object and puts the value into a scalar it converts it to binary 7 bit ascii "even" parity. when .NET applications read this data from the encryption object it is simply read in as 7 bit ascii. why is this happening and what can i do to fore it in as 7 bit ascii?

in .NET C# object returns an EOT Hex 04 in 7 bit ascii

in perl the object returns EOT Hex 84 in 7 bit ascii even parity

can it be forced to 7 bit ascii or can i convert the 7 bit ascii even parity to 7 bit ascii easily?

the convert route is not optimal for performance, the cpu is already hit from the auto conversion to 7 bit ascii even parity.

Thanks in advance
  • Comment on 7bit ascii equal parity posing problems

Replies are listed 'Best First'.
Re: 7bit ascii equal parity posing problems
by Stevie-O (Friar) on Mar 03, 2004 at 00:10 UTC
    Not having seen your code, I have no idea why anything is doing anything :) But I can provide you with this little snippet:
    $str &= ("\177" x length $str);
    That will remove the 8th bit from every character in $str.
    $"=$,,$_=q>|\p4<6 8p<M/_|<('=> .q>.<4-KI<l|2$<6%s!<qn#F<>;$, .=pack'N*',"@{[unpack'C*',$_] }"for split/</;$_=$,,y[A-Z a-z] {}cd;print lc
      i am using a Win32::OLE object that works like this:
      my $obj = lockpan(); //interacts with a vb6 dll my $enc_data = obj->encryptval($data); //returns binary val $enc_data = '0x' . unpack('H*', $enc_data); //bin -> hex #$enc_data is then written to a sql db
      when the code is stored it is stored a 7 bit ascii even parity. so some how perl takes 7 bit ascii and turns it into 7 bit ascii even parity. why and how can i stop this?
Re: 7bit ascii equal parity posing problems
by Roger (Parson) on Mar 03, 2004 at 00:31 UTC
    I am guessing that you are using Win32::OLE? Have a look at the property get's character code conversion page option. You can have the following code pages: CP_ACP CP_OEMCP CP_MACCP CP_UTF7 CP_UTF8. The default code page is CP_ACP, but you could try the CP_OEMCP to modify its character conversion behaviour. I haven't seen your code, so this is just a guess.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://333378]
Approved by Wally Hartshorn
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2018-08-14 15:20 GMT
Find Nodes?
    Voting Booth?
    Asked to put a square peg in a round hole, I would:

    Results (152 votes). Check out past polls.