![]() |
Delphi-Version: 7
Ansi, Unicode & HTML-Strings
Hallihallo,
ich habe folgendes Problem: Ich habe eine Textdatei, die anscheinend Unicode-kodiert ist. Zumindest enthält sie russische Buchstaben und nicht Ansi-Sonderzeichen, wie z.B. ein kleines i ohne Punkt (ı), das heißt doch dann das sie Unicode-kodiert ist, oder? Auf jeden Fall muss ich jetzt zum einen Zeichen aus diesem Dokument auf meiner Form anzeigen, und zum anderen in einen Adress-String für HTML einbauen. Zum Anzeigen habe ich die TNT-Komponenten, welche die Sonderzeichen auch wunderbar darstellen, allerdings bekomme ich sie einfach nicht aus der Datei raus. Hab mich dumm und dämlich gesucht, aber irgendwie nichts gefunden was mir weiterhilft ... kann jemandn von euch mir da auf die Sprünge helfen? Das mit den HTML-Strings habe ich vorher mit HTTPEncode(AnsiToUTF8(Name)) gemacht, allerdings muss ich, jetzt wo ich Unicode brauche, die Strings ja sicherlich irgendwie anders speichern, da wird das dann mit dem Ansi nicht mehr gehen ... Ich benutze Delphi 7, die ganzen Unicode-Features der neueren Delphi-Versionen fallen also leider weg. Danke im voraus =) |
AW: Ansi, Unicode & HTML-Strings
Zitat:
aber die Codierung sollte, bei einer ordentlichen HTML-Datei im Header drin stehn (siehe Encoding). Codepage, UTF-8, UCS2, UTF-16, ................. WideString (Unicode = UTF-16) hast du. Eine TTntStringList für Unicode hast du auch und mit etwas Glück kannst du dieser das entsprechende Encoding mitteilen, damit sie den Text ordentlich ausliest/übersetzt. |
AW: Ansi, Unicode & HTML-Strings
Hey,
anscheinend hab ich das nen bisschen unklar ausgedrückt, die Zeichen die ich einlesen will befinden sich nicht in einer HTML-Datei, sondern in einer einfachen .txt Datei. Diese will ich dann in meinem Programm darstellen. Anschließend muss ich daraus noch die Adresse einer HTML Datei berechnen, in der die ganzen Sonderzeichen also mit %XX escapet werden müssen. Edit: Vielleicht mal ein Beispiel: In meiner .txt Datei stehen etwa 50 Zeilen, wovon aber nur etwa ~10 Wörter für mich interessant sind, die will ich auslesen und in ne Stringlist schreiben & speichern. Diese Wörter zu ermitteln ist für mich kein Problem, nehmen wir an eines dieser Wörter sei "Привет". Die russischen Zeichen kann ich z.B. in einem TnTLabel vernünftig darstellen, allerdings schaffe ich es nicht, sie aus der Datei auszulesen & in das Label zu transferieren, weil ich mit dem Unicode nicht klarkomme. Anschließend möchte ich eine Webanfrage simulieren, bei der der entsprechende Begriff in eine Suchleiste eingegeben wird, am Beispiel von Wikipedia müsste ich zu "Привет" also folgenden Adressstring für meine Http.Get-Methode ermitteln: "http://de.wikipedia.org/w/index.php?search=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1 %82". Hoffe jetzt is klar was ich meine =) |
AW: Ansi, Unicode & HTML-Strings
Indy sollte die Kodierung der URL machen können. Wie das mit Indy und Unicode allerdings bei Delphi 7 aussieht, kann ich dir nicht sagen.
|
AW: Ansi, Unicode & HTML-Strings
Versuche mal eine TWideStringList zu verwenden. Textdateien haben ein
![]() Gibt es kein TTNTMemo, mit der Du die Datei einlesen kannst? |
AW: Ansi, Unicode & HTML-Strings
Zitat:
Dann wäre klar was darin steht und niemand ist darauf angewiesen irgendetwas zu spekulieren. Gruß K-H |
AW: Ansi, Unicode & HTML-Strings
Zitat:
Die korrekte Webanfrage kann man erstellen, indem man den entsprechenden String mit HTTPEncode(UTF8Encode(meinString)); bearbeitet. Das Problem was dabei entsteht, ist allerdings folgendes: Bei der .txt-Datei, die ich lesen möchte, handelt es sich um ein LogFile, welches zu dem Zeitpunkt, wo ich auf die Datei zugreifen möchte, noch erweitert wird, also von der Anwendung gelockt ist. Wie kann ich jetzt mit LoadFromFile trotzdem darauf zugreifen (ich will ja nur Lesen ...)? Edit: Mit dem Editor kann ich das Textfile weiterhin öffnen, also kann es nicht komplett gelockt sein. |
AW: Ansi, Unicode & HTML-Strings
Mit einem TFileStream mit fmShareDenyNone als Modus sollte es dann gehen. Danach kannst du dann vermutlich LoadFromStream in der StringList nehmen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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