AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TIdIRC Umlaute
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TIdIRC Umlaute

Ein Thema von Neotracer · begonnen am 25. Jan 2013 · letzter Beitrag vom 10. Feb 2013
Antwort Antwort
Neotracer

Registriert seit: 13. Jul 2010
17 Beiträge
 
Delphi 7 Personal
 
#1

Indy TIdIRC Umlaute

  Alt 25. Jan 2013, 15:06
Ich benutze Indy 10 und Delphi XE und dort die Komponente TIdIRC.

Wenn ich nun über IRC eine Nachricht mit Umlauten schicke, dann kommt totaler Müll an in dem Event "IRCPrivateMessage".

Beispiel. Ich schicke von einem anderen IRC-Client aus das Zeichen 'ä' und es kommt an "C$".
Hier sieht man es noch mal genauer:
http://www.abload.de/img/omgxhr18.jpg

Woran kann das liegen? Was kann ich dagegen tun?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Indy TIdIRC Umlaute

  Alt 25. Jan 2013, 15:45
Aktuelles Build von Indy?
AFAIK gabs/gibts noch ein paar Bugs mit Unicode/Sonderzeichen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Neotracer

Registriert seit: 13. Jul 2010
17 Beiträge
 
Delphi 7 Personal
 
#3

AW: Indy TIdIRC Umlaute

  Alt 25. Jan 2013, 16:13
Hmm. Wo kann ich das nachgucken?
Ich kann natürlich versuchen das neueste Indy 10 zu installieren. Das probiere ich mal, danke.

Trotzdem. Kann einer erkennen, was da schiefläuft? Und ob es ein Workaround gibt?
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: Indy TIdIRC Umlaute

  Alt 8. Feb 2013, 14:55
Ich habe leider dasselbe Problem mit der wirklich neuesten Version (10-4924 von gestern) und den TCPIP-Komponenten. Hässlich, aber plotzlich werden da z.B. bei einem IdTCPClient.SendCmd keine Umlaute mehr übermittelt, resp. beim Server kommen Fragezeichen an.
Das hat mit der früheren Version von Indy 10 noch funktioniert.
Ich habe mir jetzt folgendermassen beholfen, hoffe aber, ich könne das irgendwann wieder raus schmeissen.

Code:
IdTCPClient.SendCmd(Umlaute(Puffer, False), 200);
Code:
{Umlaute in Sende-Puffer umsetzen}
function TAServer1.Umlaute(InPuf: string; Read: boolean): string;
var i : integer;
begin
  result := '';
  if not Read then
     begin
     for i := 1 to length(InPuf) do
         result := result + String(IntToHex(Ord(InPuf[i]), 2));
     end
  else
     begin
     while length(InPuf) <> 0 do
           begin
           Result := Result + Char(StrToInt('$' + copy(InPuf,1, 2)));
           InPuf := copy(InPuf, 3, length(InPuf) - 2);
           end;
     end;
end;
Die Funktion setzt mit False alles in Hex-Notation um und mit True auf der Gegenseite wieder zurück.

Aber vielleicht hat ja jemand eine bessere Lösung. Irgendwie habe ich das Gefühl, man müsse vermütlich den Indys nur irgendwo das richtige Character Set beibringen, aber ich habe keine Ahnung, wo.
Heinz Schneider
  Mit Zitat antworten Zitat
Neotracer

Registriert seit: 13. Jul 2010
17 Beiträge
 
Delphi 7 Personal
 
#5

AW: Indy TIdIRC Umlaute

  Alt 9. Feb 2013, 16:20
Hey,

wie mein Vorredner schon sagte, habe ich die Probleme selbst mit den neusten Indys.
Dein Ansatz funktioniert in meinem Fall leider nicht, weil ich ja nicht die IRC Server umprogrammieren kann zu denen ich mich verbinde.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

AW: Indy TIdIRC Umlaute

  Alt 9. Feb 2013, 17:49
Ich würde den Versuch machen die Textcodierung zu setzen.

@hesch21
SendCmd(InPuf, 200, TIdTextEncoding.GetEncoding(1250))

@Neotracer
Bei der IRC-Komponente würde ich versuchen beim IOHandler.DefStringEncoding mal TIdTextEncoding.UTF8 oder TIdTextEncoding.GetEncoding(1250) zu setzen. Wenn ich den Quelltext richtig analysiert habe, müsste dort IndyASCIIEncoding gesetzt sein.

Geändert von samso ( 9. Feb 2013 um 18:10 Uhr)
  Mit Zitat antworten Zitat
Neotracer

Registriert seit: 13. Jul 2010
17 Beiträge
 
Delphi 7 Personal
 
#7

AW: Indy TIdIRC Umlaute

  Alt 10. Feb 2013, 17:58
@samso:

Vielen vielen Dank! Hat funktionier!
So habe ich es gemacht: Die Komponente TIdIoHandlerStack auf die Form ziehen und dann in den Propertys bei TIdIrc als IOHandler hinzufügen.
Dann wie erwähnt einfach die Zeile:
"IdIRC1.IdIOHandlerStack1.DefStringEncoding := TIdTextEncoding.UTF8;" irgendwo bevor man connected hinzufügen.

  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 19:21 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