UniStrToUcs: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
=== Parameters === | === Parameters === | ||
; uconvObj - [[ | ;uconvObj - [[UconvObject]] - input : The conversion object created from [[UniCreateUconvObject]]. | ||
; ucsBuffer - [[ | ;ucsBuffer - [[UniChar]] - output : The ucs buffer. | ||
; inBuffer - (character) - input : The input buffer that is null terminated. | ;inBuffer - (character) - input : The input buffer that is null terminated. | ||
; ucsBufferLen - (integer) - input : Number of unicode character elements in the ucsBuffer. | ;ucsBufferLen - (integer) - input : Number of unicode character elements in the ucsBuffer. | ||
<!-- | <!-- | ||
; inBufferLen - (size_t *) - input/output : The input buffer's length, in bytes. | ; inBufferLen - (size_t *) - input/output : The input buffer's length, in bytes. | ||
Line 22: | Line 22: | ||
* [[OS2 API:Unicode:error#ULS_INVALID|ULS_INVALID]] | * [[OS2 API:Unicode:error#ULS_INVALID|ULS_INVALID]] | ||
* [[OS2 API:Unicode:error#ULS_SUCCESS|ULS_SUCCESS]] | * [[OS2 API:Unicode:error#ULS_SUCCESS|ULS_SUCCESS]] | ||
=== Calling conversion === | === Calling conversion === | ||
Line 36: | Line 30: | ||
size_t unicodeBuffLen = 12; | size_t unicodeBuffLen = 12; | ||
ULONG codePage; | |||
ULONG cpLen; // length set by [[OS2 API:DosQueryCp|DosQueryCp]] | |||
UniChar unicodeBuff, // length of unicodeBuffLen | |||
ucsBuffer; // length of CCHMAXPATH | ucsBuffer; // length of CCHMAXPATH | ||
UconvObject uconvObj; | |||
character out; // allocate to CCHMAXPATH | character out; // allocate to CCHMAXPATH | ||
integer rc; | integer rc; | ||
Line 61: | Line 55: | ||
=== Related Functions === | === Related Functions === | ||
[[ | *[[UniUconvFromUcs]] | ||
[[ | *[[UniUconvToUcs]] | ||
[[ | *[[UniStrFromUcs]] | ||
=== Notes === | === Notes === | ||
The sequence of the code page characters in inBuffer is converted into a sequence of Unicode characters in ucsBuffer. | The sequence of the code page characters in inBuffer is converted into a sequence of Unicode characters in ucsBuffer. The code page was set by [[UniCreateUnconvObject]] call in the [[UconvObject]]. | ||
Conversion is only on bytes that convert. | Conversion is only on bytes that convert. The process stops converting on the first non-valid byte. If the ucsBuffer isn't large enough, conversion ends on the byte previous to any buffer overflow. inBuffer is updated truncating the point of failure to the end and updating the ucsBufferLen to indicate the number of successfully converted elements. | ||
=== OS Version Introduced === | === OS Version Introduced === | ||
OS/2 Warp | OS/2 Warp | ||
[[Category:Uni]] | |||
[[Category: |
Revision as of 01:11, 5 December 2016
UniStrToUcs
- UniStrToUcs(uconvObj, ucsBuffer, inBuffer, ucsBufferLen)
- Convert a code page string to a UCS string.
Parameters
- uconvObj - UconvObject - input
- The conversion object created from UniCreateUconvObject.
- ucsBuffer - UniChar - output
- The ucs buffer.
- inBuffer - (character) - input
- The input buffer that is null terminated.
- ucsBufferLen - (integer) - input
- Number of unicode character elements in the ucsBuffer.
Constants
None
Returns
An integer with values of:
Calling conversion
Example Code
character inBuffer = "C:\SOMEPATH\FILE.TXT"; size_t unicodeBuffLen = 12; ULONG codePage; ULONG cpLen; // length set by DosQueryCp UniChar unicodeBuff, // length of unicodeBuffLen ucsBuffer; // length of CCHMAXPATH UconvObject uconvObj; character out; // allocate to CCHMAXPATH integer rc;
rc = DosQueryCp(size of ULONG, codePage, cpLen);
/* determine string for the conversion of codePage */ rc = UniMapCpToUcsCp(codePage, unicodeBuff, unicodeBuffLen); rc = UniCreateUconvObject(unicodeBuff, uconvObj); rc = UniStrToUcs(uconvObj, ucsBuffer, inBuffer, CCHMAXPATH); rc = UniFreeUconvObject(uconvObj);
/* conversion for current codepage that can be used for paths */ rc = UniCreateUconvObject((UniChar pointer)L"@path=yes", uconvObj); rc = UniStrFromUcs(uconvObj, out, ucsBuffer, CCHMAXPATH); rc = UniFreeUconvObject(uconvObj);
/* use out - don't forget to de-allocate out when finished with it. */ /* error checking left out for brevity */
Related Functions
Notes
The sequence of the code page characters in inBuffer is converted into a sequence of Unicode characters in ucsBuffer. The code page was set by UniCreateUnconvObject call in the UconvObject.
Conversion is only on bytes that convert. The process stops converting on the first non-valid byte. If the ucsBuffer isn't large enough, conversion ends on the byte previous to any buffer overflow. inBuffer is updated truncating the point of failure to the end and updating the ucsBufferLen to indicate the number of successfully converted elements.
OS Version Introduced
OS/2 Warp