AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.al.
Thema durchsuchen
Ansicht
Themen-Optionen

Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.al.

Ein Thema von OldGrumpy · begonnen am 9. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#1

Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.al.

  Alt 9. Okt 2006, 16:49
Hallo zusammen,

ich grübel gerade über ein Problem nach, das sich bestimmt mal wieder supereinfach lösen lässt

Ich habe ein COM-Objekt, das mir einen Freitext in einem Puffer liefert der 512 Bytes gross ist und somit 256 Unicode-Zeichen (UTF-16, oder, da Windows, besser gesagt UCS-2) enthalten kann. Da drin steckt also ein nullterminierter Unicodestring.

Den in einen normalen String zu konvertieren ist nicht das Problem (das mache ich mit WideCharToString), nur habe ich dann in meinem normalen String ja durchaus auch Zeichen die mehr als ein Byte lang sind. Zumindest sagt die Delphi-Hilfe ja
Zitat:
"WideCharToString konvertiert den angegebenen nullterminierten Unicode-String in einen String mit Einzel- oder Multibyte-Zeichen."
Klingt für mich nach einer Konvertierung in UTF-8? Oder was steckt dann sonst im String?

Auf jeden Fall möchte ich nun ein paar "Müllzeichen" (es sind zum Beispiel Tabs drin enthalten die bei der Ausgabe stören) entfernen, jedoch müsste ich ja auf die Länge der einzelnen Zeichen acht geben, um wenn zum Beispiel asiatische Zeichen drinständen, die nicht gnadenlos zu verhackstücken. Wie mach ich das denn nun am elegantesten? Mein Code sollte halt nicht annehmen, dass nur ASCII im Feld steht.

Für jegliche Pointer, Tipps, Hinweise und Kommentare bin ich herzlich dankbar!

Edit: Tippfehler behoben
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF8 et.al

  Alt 9. Okt 2006, 17:35
WideCharToString konvertiert in die Codepage, die bei Windows eingestellt ist, bei hiesigen Rechnern also Einzelbyte. Für Zeichen, die nicht in die Codepage passen (z.B. asiatische Zeichen) liefert WideCharToString halt einfach die beliebten Fragezeichen.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 9. Okt 2006, 17:49
Ah! Hmm, das macht die ganze Sache auf den ersten Blick richtig einfach Auf der andern Seite muss ich jetzt mal schauen was ich alles aufbohren muss, damit ich auch solche Zeichen korrekt anzeigen kann Herzlichen Dank auf jeden Fall schonmal für die Erläuterung zu WideCharToString, ich werd dann jetzt erstmal schauen, wie ich diese Zeichen weiterverarbeiten könnte. Immerhin muss dann ja auch die Komponente die alles anzeigt in der Lage sein, solche Zeichen anzuzeigen. Ich stelle immer wieder fest, dass das Ganze ein extrem ergiebiges Thema ist
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 9. Okt 2006, 17:53
Dafür gibt es die üblichen Verdächtigen TntWare Delphi Unicode Controls.
Und wenn du sie verwendest, dann bleibe am besten auch bei Unicode anstelle mit den unterschiedlichen Codepages zu jonglieren.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 9. Okt 2006, 20:47
Unicode war mir schon immer deutlich lieber als diese ominösen Codepages, bei denen nie alles so aussah wie es sollte
TNTware hatte ich zwar noch irgendwo im Hinterkopf aber auch schon halb wieder vergessen, nachdem ich vor geraumer Zeit schonmal deswegen rumge-google-t hatte Danke für den Tipp, werd ich mir nochmal anschauen. Heute hab ich erstmal mit dxgettext experimentiert, coole Sache das ganze. Allein das Pluralformenhandling ist ja wohl total abgefahren Leider passen aktueller Softwarestand und Handbuch nicht mehr hundertprozentig zusammen, aber mit etwas Experimentierfreude ging das schon. Ich werd mal weiterberichten wie das mit den Unicode Controls aussieht...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 10. Okt 2006, 06:17
Unicode Controls ist die beste Lösung. Runhandieren mit Codepages/Charsets ist ne Frickellösung die nie 100%ig funktioniert und an allen möglichen Stellen klemmt.

Ich selbst habe eine große Anwendung mit Hilfe der Elpack-Controls schon seit 2002 auf Unicode umgestellt und habe mir viel Stress erspart.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 11. Okt 2006, 11:14
Wie ist das denn überhaupt bei Systemen die auch Unicode-Dateipfade haben können? SysUtils und Co arbeiten ja alle nur mit dem Standard-Stringtyp. Gibts da Alternativen? Ich denke da besonders an Sachen wie japanische Dateinamen usw. - das könnte nen echtes Problem sein, oder sehe ich da was falsch? ExtractFileName(...) liefert mir dann ja einen runterkonvertieren String mit tollen Fragezeichen drin, oder? Zumindest könnte ich ohne ein japanisches System nix testen in der Richtung...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 11. Okt 2006, 12:49
Zitat von OldGrumpy:
Wie ist das denn überhaupt bei Systemen die auch Unicode-Dateipfade haben können? SysUtils und Co arbeiten ja alle nur mit dem Standard-Stringtyp. Gibts da Alternativen? Ich denke da besonders an Sachen wie japanische Dateinamen usw. - das könnte nen echtes Problem sein, oder sehe ich da was falsch? ExtractFileName(...) liefert mir dann ja einen runterkonvertieren String mit tollen Fragezeichen drin, oder? Zumindest könnte ich ohne ein japanisches System nix testen in der Richtung...
Die TNTWare-Controls habe auch für sowas eine Lösung....
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 11. Okt 2006, 13:14
Argh, die Sammlung ist ja viel umfangreicher als auf der Website aufgelistet Danke für den Tipp *g* Aber vollständig ist TntSysUtils nicht, IntToStr und Konsorten fehlen da...

Na mal schauen, danke auf jeden Fall!
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a

  Alt 11. Okt 2006, 13:32
Zitat von OldGrumpy:
Argh, die Sammlung ist ja viel umfangreicher als auf der Website aufgelistet Danke für den Tipp *g* Aber vollständig ist TntSysUtils nicht, IntToStr und Konsorten fehlen da...

Na mal schauen, danke auf jeden Fall!
Du kannst Dich ja beteiligen und deinen Beitrag leisten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 18:37 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