Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umlaute in HTML konforme Texte konvertieren (https://www.delphipraxis.net/148888-umlaute-html-konforme-texte-konvertieren.html)

kaju74 10. Mär 2010 12:15


Umlaute in HTML konforme Texte konvertieren
 
Hallo.

Habe zwar gesucht, das Richtige war aber irgendwie nicht dabei (oder ich sollte schleunigst in's Bett 8-).

Gibt es eine Delphi-Routine, mit der ich einen String, der Umlaute enthält, in's HTML-Derivat umwandeln kann?

Also z.B. "Änderung" in "Änderung"?

In der HTTPApp-Unit gibt's zwar eine Routine, die das macht, allerdings nur teilweise für Sonderzeichen und
nicht direkt für Umlaute.

Danke & Gruß,
- kaju

s.h.a.r.k 10. Mär 2010 12:16

Re: Umlaute in HTML konforme Texte konvertieren
 
Ich würde das selbst via StringReplace machen. Muss auch zugeben, dass ich keine andere Methode kenne, die das machen würde :mrgreen:

kaju74 10. Mär 2010 12:21

Re: Umlaute in HTML konforme Texte konvertieren
 
Hallo.

Danke...das wäre natürlich die Alternativ...dachte, vielleicht gibt's mittlerweile auch was "natives", das ich noch nicht kenne...8-)

Lieben Gruß,
- kaju

DeddyH 10. Mär 2010 12:34

Re: Umlaute in HTML konforme Texte konvertieren
 
Nur eine spontane Idee:
Delphi-Quellcode:
function Umlaute2HTML(const Text: string): string;
var strStream: TStringStream;
    i: integer;
begin
  strStream := TStringStream.Create('');
  try
    for i := 1 to Length(Text) do
      case Text[i] of
        'ä': strStream.Write('ä',6);
        'Ä': strStream.Write('Ä',6);
        'ö': strStream.Write('ö',6);
        'Ö': strStream.Write('Ö',6);
        'ü': strStream.Write('ü',6);
        'Ü': strStream.Write('Ü',6);
        else
          strStream.Write(Text[i],1);
      end;
    Result := strStream.DataString;
  finally
    strStream.Free;
  end;
end;

kaju74 10. Mär 2010 13:17

Re: Umlaute in HTML konforme Texte konvertieren
 
Danke...dann werde ich das erstmal so nehmen...

Lieben Gruß,
- kaju

Matze 10. Mär 2010 13:26

Re: Umlaute in HTML konforme Texte konvertieren
 
Denke aber daran, dass es da weitaus mehr gibt. Bei normalem Text wären evtl. ß (= &szlig;), & (= &amp;), < (= &lt;), > (= &gt;) und € (= &euro;) noch sinnvoll.
Die anderen Sonderzeichen wie © (= &copy;) & Co. werden in normalen Text wohl nicht vorhanden sein.

kaju74 10. Mär 2010 13:35

Re: Umlaute in HTML konforme Texte konvertieren
 
Ja danke...da das für ein "internes" Tool ist, weiß ich, das solche Zeichen nicht vorkommen...deshalb ja auch die Frage, ob's da nicht was fertiges (von Delphi) gibt, das dann auch schön alles unterstützt....

Lieben Gruß,
- kaju

p80286 10. Mär 2010 13:56

Re: Umlaute in HTML konforme Texte konvertieren
 
warum nicht mit UTF8encoding den entsprechenden String erstellen?

Dieses "Schlabbern" von Zeichen führt früher oder später zu Ärger und dann sucht man sich einen Wolf weil bisher doch alles so wunderbar funktionierte.

Gruß
K-H

kaju74 10. Mär 2010 14:49

Re: Umlaute in HTML konforme Texte konvertieren
 
Blöde Frage, aber wie soll das gehen?

Gruß,
- kaju

p80286 10. Mär 2010 15:16

Re: Umlaute in HTML konforme Texte konvertieren
 
entschuldige, ich hatte mich vergaloppiert, UTF8Encode ist natürlich nicht Deine Lösung.

Gruß
K-H

edit:
hilft Dir das vllt. weiter:
Delphi-Quellcode:
if length(ins)>0 then
    for i:=1 to length(ins) do
      if ord(ins[i])<128 then begin   { ist ASCII-Zeichen }
        if ord(ins[i])>$2F then begin
          case ins[i] of              { noch ein paar Sonderzeichen }
            ':' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            ';' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            '<' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            '=' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            '>' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            '?' : dumm:='&#'+inttostr(ord(ins[i]))+';';
            else dumm:=ins[i];
          end;{case-------------------------------}
          dummy:=dummy+dumm;
        end
        else begin                    { ist ASCII-Sonderzeichen }
          dumm:='&#'+inttostr(ord(ins[i]))+';';
          dummy:=dummy+dumm;
        end
      end {----                          7-Bit Zeichen}
      else begin                      {ist 8Bit Zeichen }
        dumm:='&#'+inttostr(ord(ins[i]))+';';
        dummy:=dummy+dumm;
      end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr.
Seite 1 von 2  1 2      

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