Einzelnen Beitrag anzeigen

Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Anzeigen von Unicode-Zeichen

  Alt 22. Apr 2020, 14:15
Zitat:
Schon versucht einfach8 das Unicode-Zeichen in den Quelltext zu kopieren statt das alles über Konvertierungen zu machen?
Meinem Verständnis nach funktioniert das auch unter Windows 10 nicht immer. Je nachdem, ob man die Unicode UTF-8 Einstellung aktiviert hat oder nicht, würde Windows das Zeichen unterschiedlich interpretieren. Ich lasse mich aber gerne auch belehren, falls ich falsch liege.

Zitat:
Ich vermute das unter W7 einfach die Schriftart das Zeichen nicht beinhaltet.
Die Erklärung ergibt Sinn. Den Smiley, den ich verwende, gibt es erst seit 2014 in Unicode (https://www.compart.com/de/unicode/U+1F642), wahrscheinlich zu spät für Windows 7.

Mein Workaround wäre dann, einen älteren Smiley zu benutzen, z. B. U+263A (https://www.compart.com/de/unicode/U+263A). Das funktioniert auch.


Noch eine andere Frage: Mir ist jetzt gerade erst aufgefallen, dass meine Deklaration
Delphi-Quellcode:
const
  SMILEY_UTF8_SLIGHTLY_SMILING_FACE: RawByteString = #$E2#$98#$BA; // Unicode Code Point: U+263A
zu einer Warnung führt: W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'RawByteString'. Gibt es eine andere Möglichkeit, UTF-8 kodierte Bytes in einen Delphi-String zu bekommen?

Ich habe es mit einem konstanten array[0..2] of Byte versucht, aber dann wird kein Smiley mehr angezeigt:
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
const
  SMILEY_UTF8_SLIGHTLY_SMILING_FACE: array[0..2] of Byte = ($E2, $98, $BA); // Unicode Code Point: U+263A
begin
  ShowMessage(UTF8ToString(SMILEY_UTF8_SLIGHTLY_SMILING_FACE));
end;
  Mit Zitat antworten Zitat