![]() |
Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.al.
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:
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 |
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF8 et.al
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.
|
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
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 ;)
|
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
Dafür gibt es die üblichen Verdächtigen
![]() Und wenn du sie verwendest, dann bleibe am besten auch bei Unicode anstelle mit den unterschiedlichen Codepages zu jonglieren. |
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
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 :D 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... |
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
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 ![]() |
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
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... :gruebel: :gruebel: :gruebel:
|
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
Zitat:
|
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
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! |
Re: Jonglieren mit Strings, Widestrings, Unicode, UTF-8 et.a
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 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