Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy und Umlautdomains (https://www.delphipraxis.net/154016-indy-und-umlautdomains.html)

himitsu 25. Aug 2010 08:48

Indy und Umlautdomains
 
Die Indy10 im Delphi 2010 behandeln keine Umlautdomains.

Können das die "normalen" Indy oder muß ich doch rausfinden, wie man das selbst umcodiert?

Bernhard Geyer 25. Aug 2010 08:59

AW: Indy und Umlautdomains
 
ich denke da wirst du selbst den Punycode implementieren müssen.

himitsu 25. Aug 2010 09:09

AW: Indy und Umlautdomains
 
Hab ich befürchtet :cry: ... hätte ja sein können, daß man es inzwischen schon implementiert hat.

himitsu 25. Aug 2010 10:27

AW: Indy und Umlautdomains
 
Ist zwar keine optimale Lösung, aber für mich reicht es erstmal aus.
  • Punycode Convert Unit v.1.0 von Torry runterladen
  • in TPunyClass.Encode dieses
    Delphi-Quellcode:
    if Length(output) < Length(text) then
      if Length(output) > 0 then output := output + Delimiter;
    durch jenes
    Delphi-Quellcode:
    if Length(output) < Length(text) then
    begin
      if Length(output) > 0 then output := output + Delimiter;
      output := 'xn--' + output;
    end;
    ersetzen
  • in TPunyClass.Decode am Anfang dieses
    Delphi-Quellcode:
    if Copy(input, 1, 4) <> 'xn--' then
    begin
      Result := input;
      exit;
    end else
      input := Copy(input, 5);
    einfügen

Bei mir ging es nun einfach, da die URLs eh zusammengesetzt werden.

Ansonsten muß man nun
  • die Domain extrahieren
  • die Domain aufplitten (z.B. Explode an allen '.')
  • jeden Teil einzeln mit Punycode kodieren
  • und zum Schluß die Domain wieder zusammensetzen und wieder in die URL einfügen.
Grund:
- es wird nur die Domain kodiert (Pfade und Sonstiges bleiben unangetastet)
- die TLD darf nicht kodiert werden, aber das wäre egal, da sich hier durch Punycode zumindestens nichts ändern würde
- die SLD und alle Subdomains müssen getrennt kodiert werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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-2025 by Thomas Breitkreuz