Übersicht
* Typgruppe ABAP * Typ: ABAP_ENCOD * Tabelle: TCP00A Codepage Encoding --------------------- 1100 iso-8859-1 1101 ascii 1105 us-ascii (7 bits) 1160 windows-1252 1401 iso-8859-2 4102 utf-16be 4103 utf-16le 4110 utf-8
* Typgruppe ABAP * Typ: ABAP_ENCOD * Tabelle: TCP00A Codepage Encoding --------------------- 1100 iso-8859-1 1101 ascii 1105 us-ascii (7 bits) 1160 windows-1252 1401 iso-8859-2 4102 utf-16be 4103 utf-16le 4110 utf-8
DATA: ascii_hex TYPE x. DATA: char TYPE c. DO 26 TIMES. * INT -> HEX ascii_hex = 64 + sy-index. * HEX -> CHAR cl_abap_conv_in_ce=>create( encoding = 'UTF-8' )->convert( EXPORTING input = ascii_hex IMPORTING data = char ). WRITE: / sy-index, '->', ascii_hex, '->', char. ENDDO.
DATA: char TYPE c VALUE 'A'. DATA: ascii_hex TYPE xstring. DATA: ascii_int TYPE i. DATA(o_conv) = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'L' ). o_conv->write( data = char ). * CHAR -> HEX ascii_hex = o_conv->get_buffer( ). * HEX -> INT ascii_int = ascii_hex. WRITE: / char, '->', ascii_hex, '->', ascii_int.
Quellen:
char *ansistr = "Hello" // Quelle BSTR unicodestr; // Ziel int lenA = lstrlenA(ansistr); int lenW; lenW = ::MultiByteToWideChar(CP_ACP, 0, ansistr, lenA, 0, 0); if (lenW > 0) { unicodestr = ::SysAllocStringLen(0, lenW); ::MultiByteToWideChar(CP_ACP, 0, ansistr, lenA, unicodestr, lenW); } else { // Fehler } // hier Strings auswerten ... // abschließend String löschen ::SysFreeString(unicodestr);
BSTR unicodestr = 0; // Quelle char *ansistr; // Ziel // Funktion zum Füllen des Quellstrings SomeCOMFunction(&unicodestr); int lenW = ::SysStringLen(unicodestr); int lenA = ::WideCharToMultiByte(CP_ACP, 0, unicodestr, lenW, 0, 0, NULL, NULL); if (lenA > 0) { ansistr = new char[lenA + 1]; // mit null terminator ::WideCharToMultiByte(CP_ACP, 0, unicodestr, lenW, ansistr, lenA, NULL, NULL); ansistr[lenA] = 0; // hier kann der null terminator gesetzt werden } else { // Fehler } // hier Strings auwerten ... // abschließend Strings löschen delete[] ansistr; ::SysFreeString(unicodestr);
2. Beispiel:
char cAsciiStr[] = "ASCIIText"; wchar_t wcUnicodeStr[1024]; MultiByteToWideChar(CP_ACP, 0, cAsciiStr, -1, wcUnicodeStr, 1024);
char cAsciiStr[1024]; wchar_t wcUnicodeStr[] = L"UnicodeText"; WideCharToMultiByte(CP_ACP, 0, wcUnicodeStr, -1, cAsciiStr, 1024, NULL, NULL);