/ / Delphi. Obter texto Unicode no Windows multilíngue - delphi, http, unicode, delphi-2010, indy10

Delphi Mostrar obtido com idHTTP.Get texto Unicode em multilíngues Windows - delphi, http, unicode, delphi-2010, indy10

Preciso da tua ajuda. Por favor me ajude.

Eu tenho o Delphi 2010

Obtenha um arquivo com texto Unicode (russo) do site no MemoryStream na versão em inglês do Windows 7.

Carrego esse MemoryStream com texto Unicode em, por exemplo, Memorando.

Se eu definir o idioma russo como "Idioma para programas não Unicode" no Painel de Controle, o texto será exibido corretamente no Memorando. Mas se eu definir Enlish - recebo caracteres errados (* $ ^ # ~! @).

Como posso carregar texto russo em Unicode com idHTTP.Get do site e mostrá-lo corretamente em qualquer Windows (chinês, inglês etc.) ???

Obrigado pela ajuda !!!

Respostas:

1 para resposta № 1

Sugiro atualizar para uma versão recente do Delphi habilitada para Unicode.

Atualizar: Parece que o fluxo de memória realmente contémAnsiText em uma página de código específica em vez de texto Unicode real. Você pode declarar uma variável AnsiString apropriada com essa página de código, carregar o texto nessa variável e, em seguida, carregar a variável no memorando.

É difícil contar mais sem ver os dados reais.


1 para resposta № 2

O TMemo espera texto Unicode (codificado em UTF-16). Se você baixar o texto usando a versão do TIdHTTP.Get() que preenche um TStream, você está baixando o texto bruto (geralmente codificado por Ansi) e, em seguida, é responsável por decodificar manualmente para Unicode antes de atribuí-lo ao TMemo.

Supondo que o servidor da Web esteja especificando um conjunto de caracteres correto para o texto nos cabeçalhos de resposta, use a versão de TIdHTTP.Get() que retorna um String em vez de. TIdHTTP detectará o conjunto de caracteres e decodificará os dados brutos em Unicode para você, por exemplo:

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

-1 para resposta № 3
  • Atualize para o D2009 ou superior
  • Use componentes que suportam unicode (eu lembro TMS oferece alguns componentes)
  • Defina o conjunto de caracteres / página de código corretamente para o idioma que você está usando