PreviousNext

Character Handling

When passed as an RPC parameter, the IDL char type is automatically subject to ASCII-EBCDIC conversion, depending on the character encodings used by the client and server machines. Therefore, the contents of a char type may not be the same for the sender and receiver. This allows clients and servers to maintain the same semantics when passing characters between machines that use different encodings. For example, the character a is represented by a byte with the value 61h on an ASCII machine, and a byte with the value 81h on an EBCDIC machine. RPC automatically makes the conversion so that a character parameter that prints as a on the client machine also prints as a when received by the server.

However, if what your application really intends is to pass a byte with the value 61h from client to server, such translation is clearly not what you want. To avoid this potential problem, when passing byte data with noncharacter semantics, use the IDL byte type.

Also note that IDL provides three international character types for use with nonASCII, nonEBCDIC character sets: ISO_LATIN_1, ISO_MULTI_LINGUAL, and ISO_UCS. To ensure portability, your application should use these types to declare character data in one of these sets.