TStringList speichert evtl. nicht richtig ?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
JinXiMao
Beiträge: 6
Registriert: Mo 4. Apr 2011, 20:55

TStringList speichert evtl. nicht richtig ?

Beitrag von JinXiMao »

Hallohallo!

Ich programmiere gerade einen Vokabeltrainer für Chinesisch.
Und zwar soll das Programm die abgefragten Vokabeln
mit Hilfe einer HTML-Datei darstellen.

Der Code sieht so aus:

Code: Alles auswählen

t := TStringList.Create;
  t.Add('<head><title>Vokabelliste</title></head><body>');
  t.Add('<p>Liste mit zu lernenden Vokabeln</p>');
  t.Add('<table border="2" width="800" id="table1" cellspacing="0"><tr><td><b><font size="4">Chinesisch/Chinese</font></b></td><td><b><font size="4">Pīnyīn</font></b></td><td><b><font size="4">Übersetzung/Translation</font></b></td></tr>');
  for i := 0 to Length(VLs.aLearning)-1 do begin
    t.Add('<tr><td><font size="6">'+
          VLs.aLearning[i].sChinese+'</font></td><td><font size="5">'+
          VLs.aLearning[i].sPinyin+'</font></td><td><font size="5">'+
          VLs.aLearning[i].sTranslation+'</font></td></tr>');
  end;
  t.Add('</table><p>© 我爱中国 - Wǒ ài Zhōngguó - Vokabeltrainer Chinesisch v0.9a</p></body>');
  t.SaveToFile(sProgrammordner+'lernen.htm');
  ShellExecute(Form1.Handle, nil, PChar(sProgrammordner+'lernen.htm'), nil, nil, SW_NORMAL);
  t.Free;
Wenn die Datei erstellt wird
kommt Zeichensalat heraus.
Dies ist die direkt unveränderte erstellte Datei:
http://maqqusz.ma.funpic.de/lernen.htm" onclick="window.open(this.href);return false;

Öffnet man die Datei dann mit dem einfachen Editor unter windows xp
und speichert die Datei so wie sie ist, ohne irgend etwas zu verändern,
werden die Zeichen auf einmal richtig angezeigt
-> http://maqqusz.ma.funpic.de/lernen2.htm" onclick="window.open(this.href);return false; (Achtung nervige Popupwerbung vom Webspaceanbieter)

Weiß jemand Rat? Wie bekomme ich die Datei so gespeichert, dass sie ohne Zeichensalat im Internetexplorer angezeigt wird?

Gruß,
XiMao
Zuletzt geändert von JinXiMao am Mo 4. Apr 2011, 21:16, insgesamt 1-mal geändert.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TStringList speichert evtl. nicht richtig ?

Beitrag von Socke »

Das Problem liegt nicht an TStringList sondern an den unterschiedlichen Zeichensätzen deines Quelltextes (das ist bei Lazarus mittlerweile überall UTF-8) und dem, den der Internetexplorer erwartet (CP-1252).
  • Die schnelle Lösung: Im Internet Explorer unter "Ansicht"->"Codierung"->"Unicode (UTF-8)" auswählen.
  • Nachhaltig: du schreibst in die HTML-Datei die Kodierung mit hinein:

    Code: Alles auswählen

    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
Mir fallen da spontan noch ein paar andere Möglichkeiten ein, aber die wären wohl zu aufwendig.

P.S:
Kannst du deinen Quelltext bitte in Zukunft hervorheben, der ist dann leichter zu lesen. Dazu oben im Editor auf die Schaltfläche "Highlighter" klicken und "Freepascal/Lazarus" auswählen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

JinXiMao
Beiträge: 6
Registriert: Mo 4. Apr 2011, 20:55

Re: TStringList speichert evtl. nicht richtig ?

Beitrag von JinXiMao »

Socke hat geschrieben:

Code: Alles auswählen

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
Supi. Nun klappts. Danke dir!
Socke hat geschrieben:P.S:
Kannst du deinen Quelltext bitte in Zukunft hervorheben, der ist dann leichter zu lesen. Dazu oben im Editor auf die Schaltfläche "Highlighter" klicken und "Freepascal/Lazarus" auswählen.
ah. Highligher. thx. hatte mich schon gefragt, wie man hier Quellcode vernünftig postet ^^

Gruß,
XiMao

Antworten