[HTML] Unicode‑Emojis in Texten verwenden

Einfügen von Emojis

Vorteile

  • schnell und ohne Bibliothek-Abhängigkeiten ein Symbol im Text einfügen

Nachteile

  • Darstellung variiert je nach Plattform
<!DOCTYPE html>
<html lang="de">
	<head>
		<meta charset="utf-8"/>
		<meta name="viewport" content="width=device-width,initial-scale=1"/>
		<title>Emoji Test</title>
	</head>
	<body>
		<div class="app">
			<label>&#x1f4c2; Öffnen</label>
			<label>&#x1f4c1; Ordner</label>
			<label>&#x1f4be; Diskette</label>
		</div>
	</body>
</html>

Links

[ABAP] Unicode Codepoint in Char wandeln

* Unicode Codepoint (UCCP) als 4Char-Hex in Char (akt. Codepage) wandeln
TRY.
    DATA: lv_uccp_c4 TYPE char4 VALUE '0041'.
    WRITE: / cl_abap_conv_in_ce=>uccp( lv_uccp_c4 ).
  CATCH cx_root.
ENDTRY.

TRY.
    DATA: lv_uccp_x2 TYPE x LENGTH 2.
    lv_uccp_x2 = '0042'.
    WRITE: / cl_abap_conv_in_ce=>uccp( lv_uccp_x2 ).
  CATCH cx_root.
ENDTRY.

* Unicode Codepoint (UCCPI) als Integer in Char (akt. Codepage) wandeln
TRY.
    DATA: lv_uccpi TYPE i VALUE 65.
    WRITE: / cl_abap_conv_in_ce=>uccpi( lv_uccpi ).
  CATCH cx_root.
ENDTRY.

Weiterführende Infos: Link

Stringkonvertierung ANSI/ASCII Unicode

Quellen:

CodeGuru.com
Microsoft

  • ANSI zu Unicode
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);
  • Unicode zu ANSI
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:

  • ASCII zu Unicode
char cAsciiStr[] = "ASCIIText";
wchar_t wcUnicodeStr[1024];
MultiByteToWideChar(CP_ACP, 0, cAsciiStr, -1, wcUnicodeStr, 1024);
  • Unicode zu ASCII
char cAsciiStr[1024];
wchar_t wcUnicodeStr[] = L"UnicodeText";
WideCharToMultiByte(CP_ACP, 0, wcUnicodeStr, -1, cAsciiStr, 1024, NULL, NULL);