// Wie ich (nun endlich auch) feststellen musste, hat TStringList,
// wenn es darum geht Texte zu laden, die als  UTF8 vorliegen,
// die Eigenart Umlaute und "ß" umzuwandeln. Ich habe auf
Test.php
//
einfach mal ÄÖÜßäöü geschrieben, und das Ganze unter Button1Click
//
getestet. Meine erste Lösung unter Button2Click funktioniert
// leider aber nur bei UTF8 und nicht bei ANSI.
// Da ich nicht viel Zeit hatte, habe ich den Code unter
Button3Click
// geschrieben. Es gibt vielleicht eine bessere Lösung, aber so kann
// man sich erstmal behelfen. Eine andere (bessere) Variante findet man
// unter
Button4Click.


// Getestet mit D2010 unter Win
10

var 
  SList: TStringList; 
  Datei: String = 'D:\Test.php'; 
 
procedure TForm2.Button1Click(Sender: TObject); 
var 
  I: Integer; 
begin 
  SList := TStringList.Create; 
  SList.LoadFromFile(Datei); 
  I := Pos('ÄÖÜßäöü', SList.Text); 
  ShowMessage(IntToStr(I)); // ergibt 0 
  RichEdit1.Lines.Assign(SList); // nur zum Überprüfen 
  FreeAndNil(SList); 
end; 
 
procedure TForm2.Button2Click(Sender: TObject); 
var 
  I: Integer; 
begin 
  SList := TStringList.Create; 
  SList.LoadFromFile(Datei, TEncoding.UTF8); 
  I := Pos('ÄÖÜßäöü', SList.Text); 
  ShowMessage(IntToStr(I)); // ergibt einen Wert > 0, aber nur bei UTF8 
  RichEdit1.Lines.Assign(SList); // nur zum Überprüfen 
  FreeAndNil(SList); 
end; 
 
procedure TForm2.Button3Click(Sender: TObject); 
const 
  u = 'ÄÖÜßäöü'; 
  n = 'ÄÖÜßäöü'; 
var 
  I, x: Integer; 
begin 
  SList := TStringList.Create; 
  SList.LoadFromFile(Datei); 
  for x := 0 to pred(Length(n)) do 
    SList.Text := StringReplace(SList.Text, copy(u, succ(x * 2), 2), n[x + 1], 
      [rfReplaceAll]); 
  I := Pos('ÄÖÜßäöü', SList.Text); 
  ShowMessage(IntToStr(I)); // ergibt einen Wert größer 0 
  RichEdit1.Lines.Assign(SList); // nur zum Überprüfen 
  FreeAndNil(SList); 
end;
procedure TForm1.Button4Click(Sender: TObject); 
var 
  I: Integer; 
begin 
  SList := TStringList.Create; 
  try 
    SList.LoadFromFile(Datei, TEncoding.UTF8); 
  except 
    SList.LoadFromFile(Datei); 
  end; 
  I := Pos('ÄÖÜßäöü', SList.Text); 
  ShowMessage(IntToStr(I)); // ergibt immer einen Wert größer 0 
  RichEdit1.Lines.Assign(SList); // nur zum Überprüfen 
  FreeAndNil(SList); 
end;
 
 Zugriffe seit 6.9.2001 auf Delphi-Ecke