Shawn H Corey wrote: > Bruce Ferrell wrote: >> Somehow my data is being transformed. >> >> The CGI code is: >> >> #/bin/perl >> >> use CGI::Util qw( escape unescape make_attributes ); >> use CGI; >> use CGI qw( escapeHTML ); >> >> my $q = new CGI; >> >> my $data = $q->param( 'POSTDATA' ); >> >> print STDERR $data ."\n"; >> >> >> The output is: >> >> <?xml version="1.0"?><event> >> <type>ADD</type> >> <message> >> <custID>6ec973aa3f7a96e43f86b8d2aea0585ba3096c28</custID> >> <custANI>5551313</custANI> >> <msgtype>SMS</msgtype> >> <SMSTarget>15551212</SMSTarget> >> <SMSMessage>Test message sent from script %%DNAME%% %\xdaTE%% </SMSMessage> >> <status>ALERT</status> >> </message> >> </event> >> >> And the input is: >> >> POSTDATA=<?xml version="1.0"?><event> >> <type>ADD</type> >> <message> >> <custID>6ec973aa3f7a96e43f86b8d2aea0585ba3096c28</custID> >> <custANI>5551313</custANI> >> <msgtype>SMS</msgtype> >> <SMSTarget>15551212</SMSTarget> >> <SMSMessage>Test message sent from script %%DNAME%% %%DATE%% </SMSMessage> >> <status>ALERT</status> >> </message> >> </event> >> >> any thoughts on why %%DATE%% is being transformed into %\xdaTE%% ? >> >> > > Yes. > > Oh, you also want to know why. %DA is a valid two-hexadecimal number. > HTTP will convert it into a single character. However, it shouldn't > come out as \xda but as the character. > > Everything else that follows a % is not a valid two-hexadecimal number. > > To get around it, convert all the % into %25 > > %25%25DNAME%25%25 %25%25DATE%25%25 > > In fact, it's probably best to convert all non-alphanumerics into their > corresponding two-hexadecimal numbers, including spaces and newlines. > >
Thank you Shawn! -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/