AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein UTF8 Literale leserlich machen. Welche Unit / Funktion?
Thema durchsuchen
Ansicht
Themen-Optionen

UTF8 Literale leserlich machen. Welche Unit / Funktion?

Ein Thema von DieDolly · begonnen am 22. Jul 2019 · letzter Beitrag vom 25. Jul 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 15:50
Encoding von Zeichen war noch nie meine Stärke.
Gibt es in delphi eine Unit die aus \xc4\x80 den entsprechenden Buchstaben zaubert?
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#2

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 16:22
Unit System
z.B. so:
Delphi-Quellcode:
var S:String;
begin
   S:=UTF8ToUnicodeString(#$C4#$80);
   ShowMessage(S);
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 16:23
Das \x hat nichts mit Encoding zu tun, das sind programmiersprachen-eigene Maskierungen.

Du hast also 2 Bytes und willst das explizit als UTF-8 interpretieren. TEncoding.UTF8.GetString(..) Beispiel:

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
const
   input: TBytes = [$c4, $80];
begin
   Caption :=
      TEncoding.UTF8.GetString(input)
      + ' / '
      + TEncoding.Unicode.GetString(input);
end;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 16:35
Zitat:
Das \x hat nichts mit Encoding zu tun, das sind programmiersprachen-eigene Maskierungen.
Zitat:
S:=UTF8ToUnicodeString(#$C4#$80);
Das heißt, dass diese Maskierung in Delphi ein #$ ist?

Wie bekommt man denn einen String den man dann mit StringReplace bearbeitet hat in UTF8ToUnicodeString? Einen string mit ' umschlossen mag er nicht.

Geändert von DieDolly (22. Jul 2019 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#5

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 16:45
Das heißt, dass diese Maskierung in Delphi ein #$ ist?
Im Klartext bedeutet diese Sequenz:

#: Dies ist ein Char, den ich aber mit seiner Ordnungszahl angebe
$: Dies ist eine Zahl in Hexadezimaldarstellung

#13 und #$C sind also identische Chars. Ebenso '0', #48 und #$30.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 16:47
Das macht es noch komplizierter.
Wie bekommt man einen String wie ganz oben denn in TBytes rein oder in einen lesbaren String?
Der Input kann immer wie oben aussehen. Er kann aber auch schon in lesbarer Form vorhanden sein.

Da kann auch reinkommen \xc4\x80\x16\x16\x16Hallo

Ich dachte an sowas hier aber da passt dieses spezielle A nicht mehr rein
Delphi-Quellcode:
var
 Bytes: TBytes;
begin
 Bytes := [Ord('Ā'), $80, Ord('S')];
 ShowMessage(TEncoding.UTF8.GetString(Bytes));
Aber ich glaube ich habe gerade eh einen Knoten im Kopf.

Geändert von DieDolly (22. Jul 2019 um 17:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#7

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 17:14
Da kann auch reinkommen \xc4\x80\x16\x16\x16Hallo
Ach so, du bekommst dies als String in dein Programm?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz