/ / Delphi. Mit idHTTP erhalten. Erhalten Sie Unicode-Text in mehrsprachigem Windows - Delphi, http, Unicode, Delphi-2010, Indy10

Delphi. Mit idHTTP erhalten. Erhalten Sie Unicode-Text in mehrsprachigem Windows - delphi, http, unicode, delphi-2010, indy10

Ich brauche deine Hilfe. Bitte hilf mir.

Ich habe Delphi 2010

Ich versuche, idHTTP.Erhalte eine Datei mit Unicode-Text (Russisch) von der Site in MemoryStream unter der englischen Version von Windows 7.

Dann lade ich diesen MemoryStream mit Unicode-Text beispielsweise in Memo.

Wenn ich die russische Sprache in der Systemsteuerung als "Sprache für Nicht-Unicode-Programme" eingestellt habe, wird der Text ordnungsgemäß in Memo angezeigt. Wenn ich jedoch Enlish setze, bekomme ich falsche Zeichen (* $ ^ # ~! @).

Wie kann ich russischen Text in Unicode mit idHTTP laden. Von der Site abrufen und ihn in jedem Windows (Chinesisch, Englisch usw.) Richtig anzeigen?

Danke für die Hilfe!!!

Antworten:

1 für die Antwort № 1

Ich empfehle ein Update auf eine aktuelle Delphi-Version, die Unicode-fähig ist.

Aktualisieren: Es sieht so aus, als ob der Memorystream tatsächlich enthältAnsiText in einer bestimmten Codepage anstelle von echtem Unicode-Text. Sie können eine geeignete AnsiString-Variable mit dieser Codepage deklarieren, den Text in diese Variable laden und dann die Variable in das Memo laden.

Es ist schwer mehr zu sagen, ohne die wirklichen Daten zu sehen.


1 für die Antwort № 2

TMemo erwartet Unicode-Text (UTF-16-codiert). Wenn Sie den Text mit der Version von herunterladen TIdHTTP.Get() das füllt ein TStreamDann laden Sie den rohen (in der Regel Ansi-codierten) Text herunter und sind dann dafür verantwortlich, diesen manuell in Unicode zu decodieren, bevor Sie ihn dem zuweisen TMemo.

Angenommen, der Webserver gibt in den Antwortheadern einen korrekten Zeichensatz für den Text an TIdHTTP.Get() das gibt a zurück String stattdessen. TIdHTTP erkennt den Zeichensatz und decodiert die Rohdaten in Unicode, zB:

Memo1.Text := IdHTTP1.Get("http://addr_here");

-1 für die Antwort № 3
  • Update auf D2009 oder höher
  • Verwenden Sie Komponenten, die Unicode unterstützen TMS bietet einige Komponenten an)
  • Stellen Sie den Zeichensatz / die Codepage korrekt für die von Ihnen verwendete Sprache ein