Device encoding provides information to applications about fonts available on the device, including the format that is used by AECHAR-based _DrawText() functions.
When localizing applications, the following should be taken into consideration:
- When applications call ISHELL_LoadResString(), STREXPAND(), or STRCOMPRESS():
- For KSC5601, S_JIS, and EUC_CN, the string encoding must match the device encoding or else the string will not be expanded correctly.
- The system calls STREXPAND() internally and assumes that the device encoding matches the resource encoding.
- Converts from well-understood one- or two-byte strings per character encoding into Brew's special one uint16 per character encoding.
- Data passed to IDisplay_DrawText() or IWidget_SetText() should be in wEncoding format (unless the system fonts have been overridden with something that supports another encoding).
- IResFile loads a string, determines its encoding, then converts it to AECHAR.
IResFile does not depend on device encoding.
IResFile does not support the AEE_RES_LANGDIR and AEE_RES_LANGSUF macros.
To avoid encoded string expansion, applications should do the following:
- Look at the encoding and language to decide what format text to present to platform DrawText() functions.
- Avoid ISHELL_LoadResString(), STREXPAND(), and STRCOMPRESS().
- Load data (for example, by calling ISHELL_LoadResDataEx()) and use ICharsetConv class to convert to AECHAR.