EbcdicToUnicode (String function): Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 90: | Line 90: | ||
to a byte-stream string, which the [[Intrinsic StringToHex Function|StringToHex]] method converts to its | to a byte-stream string, which the [[Intrinsic StringToHex Function|StringToHex]] method converts to its | ||
hex representation. | hex representation. | ||
===See also=== | |||
[[List of Intrinsic String Methods]] |
Revision as of 21:08, 21 August 2010
This intrinsic function converts an EBCDIC string to Unicode using the current Unicode tables. As an option, XML style hexadecimal character references, XHTML entity references, and '&' references are converted to the represented Unicode character. An additional option lets you specify how to handle untranslatable EBCDIC characters.
The EbcdicToUnicode function is available as of version 7.3 of the Sirius Mods.
EbcdicToUnicode syntax
%unicode = string:EbcdicToUnicode( [CharacterDecode=bool] [, Untranslatable=char] )
Syntax Terms
- %unicode
- A string variable to receive the method object string translated to Unicode.
- string
- An EBCDIC character string.
- CharacterDecode=bool
- The optional (name required) CharacterDecode argument is a Boolean:
- If its value is 'True', an ampersand (&) in the input EBCDIC string is allowed only as the beginning of one of these types of character or entity reference:
- The substring '&'. This substring is converted to a single '&' character.
- A hexadecimal character reference (for example, the eight characters '“' for the Unicode Left double quotation mark). The character reference is converted to the referenced character.
- As of Sirius Mods version 7.6, an XHTML entity reference (for example, the six characters '©' for the "copyright" character). The entity reference is converted to the referenced character.
- If its value is 'True', an ampersand (&) in the input EBCDIC string is allowed only as the beginning of one of these types of character or entity reference:
- If its value is 'False', the default, an ampersand is treated only as a normal character.
- Untranslatable=char
- The optional (name required) Untranslatable argument is a single character or a null string that specifies
how to handle EBCDIC input characters that are not translatable to Unicode:
- If the value is a single Unicode character, any untranslatable EBCDIC characters are replaced with that Unicode character.
- If the value is the null string, any untranslatable EBCDIC characters are removed from the input string.
Exceptions
This intrinsic function can throw the following exception:
- CharacterTranslationException
- If the method encounters a translation problem, properties of the exception object may indicate the location and type of problem.
Usage Notes
- You can find the list of XHTML entities on the Internet at the following URL:
http://www.w3.org/TR/xhtml1/dtds.html#h-A2
- More information is available about the Unicode tables.
- The EbcdicToAscii method converts an EBCDIC string to ASCII.
- The U function is a compile-time-only equivalent of the EbcdicToUnicode method (with CharacterDecode argument implicitly set to 'True').
- Using EbcdicToUnicode (or the U function) is necessary if the string you want to convert to Unicode may contain a hexadecimal character reference. Such a reference cannot be meaningfully assigned to a Unicode variable otherwise.
Examples
The following fragment shows four calls of EbcdicToUnicode: respectively against translatable EBCDIC characters, a string with a character reference, a string with an entity reference, and a string with an EBCDIC character that cannot be translated to Unicode. The X constant function is used in the example.
%e String Len 20 %u Unicode %e = '12' %u = %e:EbcdicToUnicode Print %u Print %u:UnicodeToUtf16:StringToHex %e = '1™2' %u = %e:EbcdicToUnicode(CharacterDecode=True) Print %u:UnicodeToUtf16:StringToHex %e = '©' %u = %e:EbcdicToUnicode(CharacterDecode=True) Print %u %e = 'F1FFF2':X %u = %e:EbcdicToUnicode
The result of the above fragment is:
12 00310032 003121220032 © CANCELLING REQUEST: MSIR.0751: Class STRING, function EBCDICTOUNICODE: CHARACTER TRANSLATIONEXCEPTION exception: EBCDIC character X'FF' without valid translation to Unicode at byte position 2 ...
Note
The initial 'Print %u' statement in the example above is not very revealing because it is equivalent to specifying 'Print %u:UnicodeToEbcdic' — a Unicode string is implicitly converted to EBCDIC when it is used in an EBCDIC context like a Print statement. The UnicodeToUtf16 method, however, converts the Unicode variable to a byte-stream string, which the StringToHex method converts to its hex representation.