AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Escape Sequenz nach Unicode

Ein Thema von SittingDuck · begonnen am 15. Jan 2012 · letzter Beitrag vom 16. Jan 2012
Antwort Antwort
Seite 1 von 2  1 2      
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#1

Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 20:23
Hallo zusammen.

Ich habe eine Textdatei voll mit Unicode Escape-Sequenzen die alle z.B. so ausehen: 'U+1F618', 'U+1F604' ...
Nun möchte ich diese als Unicode-Zeichen in eine Variable einlesen. Das Ergebnis sollte dann dasselbe sein wie:
Code:
var s: string;

s := UTF8.Encode(#$01F618);
Ist warscheinlich ganz einfach, aber ich komme nicht dauf ...
Besten Dank ...
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 22:57
Scanne mit einen 7-Zeichen großen Fenster über den String. Immer wenn das Muster im Fenster erscheint, schmeißt du den Inhalt weg und gibst das passendende Zeichen im Ausgabestring aus.

Könnte funktionieren
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:07
UTF8Decode kennt keine Surrogates, also kannst du damit keine Zeichen über #$FFFF dekodieren.





Ach ja, wie wäre es, wenn du dir die Parameter und Rückgabewerte ansiehst?
Der Rückgabewert paßt also nicht zur Variable.
Delphi ab 2009 (also auch dein 2010) wandelt hier das UTF8 wieder zurück in Unicode.

UTF8.Encode liefert UFT8 zurück und kein Unicode (UTF8String und nicht String/UnicodeString).

Also abgesehn davon, daß dieser Unicode-Bereich nicht umgewandelt werden kann, dann wäre, selbst wenn es ginge, alles umsonst.
Unicode > UTF8 > Unicode
$2B or not $2B

Geändert von himitsu (15. Jan 2012 um 23:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:20
Naja, wenn man alle Zeichen als UTF-16 Zeichen ausgegibt, kann man dann den kompletten Ausgabestring in das konvertieren lassen, was man braucht.
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:27
Hmm ... komisch
Code:
s := UTF8.Encode(#$01F618);
funktioniert ja und packt mir das richtige Unicode Zeichen in die Variable, auch wenn der Compiler etwas meckert. Aber so kann ich ja nicht mit den Strings aus der Textdatei arbeiten. Was ich bräuchte wäre sowas:
Code:
var s: string;

s := '$01F618';
s := UTF8.Encode(Chr(s));
aber das ist nicht dasselbe wie oben.
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:32
Das geht mit StrToInt( '$01F618' );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:44
Aber das geht ja in meinem Beispiel nur bis $FFFF

Code:
UTF8.Encode(Chr(StrToInt('$01F618')));
Also ich habe einen UTF8 codierten String, da steckt ein Symbol drin was der Sequenz U+1F618 entspricht. Wie finde ich das z.B. mit der Pos Funktion?
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Escape Sequenz nach Unicode

  Alt 15. Jan 2012, 23:53
Irgendwie verstehe ich jetzt nur noch Bahnhofskantine

Wieso geht da was nur bis $FFFF?

Was willst du jetzt auf einmal mit Pos?
Eben wolltest du noch etwas umwandeln, jetzt was mit Pos suchen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
SittingDuck

Registriert seit: 11. Jan 2006
Ort: Leverkusen
159 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Escape Sequenz nach Unicode

  Alt 16. Jan 2012, 00:06
Sorry, das war etwas unglücklich formuliert.
Also um bei der Eingangsfrage zu bleiben ...
Meine Textdatei hat folgende Zeilen:

U+1F618
U+1F604
...

Nach meinem Kenntnisstand sind das Codepoints welche ein Unicodezeichen representieren. Auf Basis dieser Zeilen, würde ich gerne einen String zusammenbauen, welche diese Unicodezeichen enthält. Einen Teilerfolg habe ich mit dieser Zeile erreicht, aber weiter komme ich nicht.
Code:
s := UTF8.Encode(#$01F618);
Diese Zeile benutzt direkt diese Hexzahlen und nimmt sie leider nicht aus der Textdatei.
Es tut mit Leid, wenn das etwas 'schwammig' formulert ist, aber ich bin im Unicode-Thema alles andere als Sattelfest.
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Escape Sequenz nach Unicode

  Alt 16. Jan 2012, 00:13
Zitat:
Wieso geht da was nur bis $FFFF?
UTF-16 (UnicodeString/WideString) => 2 Byte pro Zeichen => 16 Bit pro Zeichen => 2^16 = 65536 Werte pro Zeichen => 65535 = $FFFF

Und das darüber ($010000 bis $1FFFFF) wird mit den Surrogates dargestellt.
Also, in UFT8Decode und Co. sind die Surrogates nicht implementiert und ansonsten ist es auch garantiert nicht möglich diese über eine billige (direkte) 1zu1-Ordinal>Character-Umrechnung hinzubekommen, denn Surrogate-Pairs sind 2 Zeichen und nicht nur 1 Zeichen.



Ach ja, nur nochmal zum Nachdenken:
Was macht Delphi-Referenz durchsuchenChr?
einen Ordinalwert in ein Zeichen umwandeln.
Und ist ein String ein ordinaler Wert?
$2B or not $2B

Geändert von himitsu (16. Jan 2012 um 00:26 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz