%SYN_ESCAPE_HANDLE
Escape characters in a string in a handle
WSupported on Windows
|
USupported on Unix
|
VSupported on OpenVMS
|
NSupported in Synergy .NET
|
status = %SYN_ESCAPE_HANDLE(handle, rules, length)
Return value
status
One of the following values:
0 = Successful
E_INVHDL = A memory handle whose length is 0 was passed
Arguments
handle
The memory handle that contains the string to escape. (D_HANDLE)
rules
The escape rules to use:
XML_RULES = Use XML escape rules.
HTTP_RULES = Use HTTP escape rules.
HTTPDATA_RULES = Use RFC 3986 escape rules.
length
The length of the string and, upon return, the length of the escaped text. (n)
Discussion
%SYN_ESCAPE_HANDLE enables you to escape certain characters in a string within a memory handle so that an XML or HTTP parser can process them properly.
The following table lists the characters that will be escaped in an XML string and their corresponding escape codes:
Description |
Escape code |
|
---|---|---|
& |
Ampersand |
& |
< |
Less than sign |
< |
> |
Greater than sign |
> |
' |
Apostrophe |
' |
" |
Double quotation mark |
" |
The following table lists the characters that will be escaped in an HTTP URI and their corresponding escape codes:
Description |
Escape code (hex) |
|
---|---|---|
0-31 (decimal) |
Unprintable characters |
%00-%1F |
127 (decimal) |
Delete |
%7F |
128-255 (decimal) |
Non-ASCII characters |
%80-%FF |
$ |
Dollar sign |
%24 |
+ |
Plus sign |
%2B |
, |
Comma |
%2C |
' ' |
Space |
%20 |
" |
Double quotation mark |
%22 |
< |
Less than sign |
%3C |
> |
Greater than sign |
%3E |
# |
Pound sign |
%23 |
% |
Percent |
%25 |
{ |
Left curly brace |
%7B |
} |
Right curly brace |
%7D |
| |
Vertical bar |
%7C |
\ |
Backslash |
%5C |
^ |
Caret |
%5E |
~ |
Tilde |
%7E |
[ |
Left square bracket |
%5B |
] |
Right square bracket |
%5D |
` |
Accent |
%60 |
HTTPDATA_RULES enables you to encrypt data parts of the URI without affecting unreserved characters in the URI. The unreserved characters are alpha, numeric, hyphen (-), period (.), underscore (_), and tilde (~); all other characters are escaped. For detailed information about URI syntax and RFC 3986 escape rules, see tools.ietf.org/htm/rfc3986#section-2.
See also
- %SYN_UNESCAPE_HANDLE routine
- HTTP_NOESCAPE environment variable
.include "DBLDIR:synxml.def" record h ,D_HANDLE len ,i4 i ,i4 proc open(2,o,"tt:") h = %mem_proc(DM_ALLOC+DM_STATIC,25) ^m(h) = 'hey$+, \"<>#%{}|\\^~[]hey' len = %trimz(^m(h)) i = %syn_escape_handle(h,HTTP_RULES,len) writes(2,^m(h)) len = %trimz(^m(h)) i = %syn_unescape_handle(h,HTTP_RULES,len) writes(2,^m(h)) close(2)