AGB  ·  Datenschutz  ·  Impressum  







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

Ansi, Unicode & HTML-Strings

Ein Thema von G-Baumstamm · begonnen am 3. Jul 2012 · letzter Beitrag vom 4. Jul 2012
Antwort Antwort
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#1

Ansi, Unicode & HTML-Strings

  Alt 3. Jul 2012, 23:59
Delphi-Version: 7
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 =)
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 00:09
das heißt doch dann das sie Unicode-kodiert ist, oder?
Nö,
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 08:33
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 =)
Daniel NR

Geändert von G-Baumstamm ( 4. Jul 2012 um 09:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 09:35
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 10:07
Versuche mal eine TWideStringList zu verwenden. Textdateien haben ein BOM, und deshalb siehst Du alles korrekt. Beim Einlesen in eine TStringList wird die BOM aber ignoriert (soweit ich mich erinnere).

Gibt es kein TTNTMemo, mit der Du die Datei einlesen kannst?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 10:21
Ich habe eine Textdatei, die anscheinend Unicode-kodiert ist.
wie wäre es, sich einmal einen Hex-Dump dieser Datei anzusehen?
Dann wäre klar was darin steht und niemand ist darauf angewiesen irgendetwas zu spekulieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 11:48
Versuche mal eine TWideStringList zu verwenden. Textdateien haben ein BOM, und deshalb siehst Du alles korrekt. Beim Einlesen in eine TStringList wird die BOM aber ignoriert (soweit ich mich erinnere).

Gibt es kein TTNTMemo, mit der Du die Datei einlesen kannst?
Hey, danke, das hat mir schonmal geholfen! TWideStringList gibts zwar anscheinend unter Delphi 7 noch nicht, allerdings kann man hierfür eine TTnTStringList nehmen, die kann natürlich auch Unicode. Also einfach die Textdatei in die TnTStringList einlesen, und solange man ansonsten nur widestrings anstelle von strings benutzt, kann man damit dann auch vernünftig arbeiten.

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.
Daniel NR

Geändert von G-Baumstamm ( 4. Jul 2012 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Ansi, Unicode & HTML-Strings

  Alt 4. Jul 2012, 12:52
Mit einem TFileStream mit fmShareDenyNone als Modus sollte es dann gehen. Danach kannst du dann vermutlich LoadFromStream in der StringList nehmen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 05:01 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