/ / Delphi. Show ottenuto con idHTTP.Get Testo Unicode in multilingua Windows - delphi, http, unicode, delphi-2010, indy10

Delphi. Show ottenuto con idHTTP.Get Testo Unicode in multilingua Windows - delphi, http, unicode, delphi-2010, indy10

Ho bisogno del tuo aiuto. Mi aiuti per favore.

Ho Delphi 2010

Provo a idHTTP. Ottieni un file con testo Unicode (russo) dal sito in MemoryStream sulla versione inglese di Windows 7.

Quindi carico questo MemoryStream con testo Unicode, ad esempio, Memo.

Se imposto il russo come "Lingua per programmi non Unicode" nel Pannello di controllo, il testo viene visualizzato correttamente in Memo. Ma se imposto Enlish - ottengo caratteri sbagliati (* $ ^ # ~! @).

Come posso caricare il testo russo in Unicode con idHTTP.Get dal sito e mostrarlo correttamente in qualsiasi finestra (cinese, inglese ecc.) ???

Grazie per il tuo aiuto!!!

risposte:

1 per risposta № 1

Suggerisco di aggiornare ad una versione di Delphi recente che è abilitata per Unicode.

Aggiornare: Sembra che il memorystream contenga effettivamenteAnsiText in una tabella codici specifica invece del testo Unicode reale. È possibile dichiarare una variabile AnsiString appropriata con quella codepage, caricare il testo in tale variabile e quindi caricare la variabile nel memo.

È difficile dire di più senza vedere i dati reali.


1 per risposta № 2

TMemo si aspetta il testo Unicode (codificato UTF-16). Se si scarica il testo utilizzando la versione di TIdHTTP.Get() che riempie a TStream, quindi stai scaricando il testo non elaborato (solitamente codificato da Ansi), quindi sei responsabile della decodifica manuale di tale codice in Unicode prima di assegnarlo al TMemo.

Supponendo che il webserver stia specificando un set di caratteri corretto per il testo nelle intestazioni di risposta, quindi usi la versione di TIdHTTP.Get() che restituisce a String anziché. TIdHTTP rileverà il set di caratteri e decodificherà i dati grezzi in Unicode per te, ad esempio:

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

-1 per risposta № 3
  • Aggiornamento a D2009 o versioni successive
  • Usa componenti che supportano l'unicode (mi ricordo TMS offre alcuni componenti)
  • Imposta correttamente la serie di caratteri / codice per la lingua che stai utilizzando