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
Benutzerbild von Sir Rufo
Sir Rufo

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

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
 
#2

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
 
#3

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
 
#4

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.326 Beiträge
 
Delphi 12 Athens
 
#5

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?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Jan 2012 um 00:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Escape Sequenz nach Unicode

  Alt 16. Jan 2012, 00:32
Vielleicht denken wir komplizierter als es ist:

Angeblich steht in jeder Zeile nur eine dieser Sequenzen. Das Finden hat sich also erledigt (zeilenweise auslesen).

Dann zum Umwandeln:
Jede dieser Sequenzen wird in eine Zahl umgewandelt und als UTF-Character betrachtet.
Diese werden nun nacheinander in einen UTF-16-String geschrieben.
Dieser String kann nun (im Ganzen) mit den üblichen Mitteln konvertiert werden (zB. in UTF-8).

EDIT: @UTF-16:
Mhm, da habe ich wohl die Stellen nicht richtig gezählt Aber Himitsu hat mit den Surrogates angefangen *schuld-wegschieb*

Geändert von BUG (16. Jan 2012 um 00:40 Uhr)
  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
 
#7

AW: Escape Sequenz nach Unicode

  Alt 16. Jan 2012, 00:35
Ok, jetzt bin ich wieder auf dem Gleis

Du brauchst wohl die Funktion Delphi-Referenz durchsuchenConvertFromUtf32

Hier hat sich der Jacob dieses Themas einmal angenommen
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
 
#8

AW: Escape Sequenz nach Unicode

  Alt 16. Jan 2012, 09:55
Ein Dank an Sir Rufo und die anderen für die Hilfe.
Genau diese Routine habe ich gebraucht.
Ciao ... SittingDuck
iPhone Backup und mehr: iTwin v3.9 Beta ... Alternative Startleiste: Launcher v3.8 !
  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 00:29 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 by Thomas Breitkreuz