Delphi 德尔菲。显示使用idHTTP获取的文本。在多语言窗口中获取Unicode文本
我需要你的帮助。请帮帮我 我有德尔福2010 我尝试idHTTP。在英文版的Windows7上,从站点获取一个带有Unicode文本(俄语)的文件到MemoryStream 然后我将这个带有Unicode文本的MemoryStream加载到例如Memo中 如果我在控制面板中将俄语设置为“非Unicode程序语言”,则文本将正确显示在备忘录中。但是如果我设置Enlish,我会得到错误的字符(*$^#~!@) 如何使用idHTTP加载Unicode格式的俄语文本。从站点获取并在任何窗口中正确显示(中文、英文等)Delphi 德尔菲。显示使用idHTTP获取的文本。在多语言窗口中获取Unicode文本,delphi,http,unicode,delphi-2010,indy10,Delphi,Http,Unicode,Delphi 2010,Indy10,我需要你的帮助。请帮帮我 我有德尔福2010 我尝试idHTTP。在英文版的Windows7上,从站点获取一个带有Unicode文本(俄语)的文件到MemoryStream 然后我将这个带有Unicode文本的MemoryStream加载到例如Memo中 如果我在控制面板中将俄语设置为“非Unicode程序语言”,则文本将正确显示在备忘录中。但是如果我设置Enlish,我会得到错误的字符(*$^#~!@) 如何使用idHTTP加载Unicode格式的俄语文本。从站点获取并在任何窗口中正确显示(中
谢谢你的帮助 我建议更新到最新的启用Unicode的Delphi版本 更新:看起来memorystream实际上在特定代码页中包含AnsiText,而不是真正的Unicode文本。您可以使用该代码页声明一个适当的ansisting变量,将文本加载到该变量中,然后将该变量加载到备忘录中 如果看不到真实数据,就很难说出更多信息。
- 更新至D2009或更高版本
- 使用支持unicode的组件(我记得提供了一些组件)
- 为您使用的语言正确设置字符集/代码页
TStream
的TIdHTTP.Get()
版本下载文本,则您将下载原始(通常为Ansi编码)文本,然后负责手动将其解码为Unicode,然后将其分配给TMemo
假设Web服务器为响应头中的文本指定了正确的字符集,则使用返回字符串的TIdHTTP.Get()
版本TIdHTTP
将检测字符集并将原始数据解码为Unicode,例如:
Memo1.Text := IdHTTP1.Get('http://addr_here');
@Michael:D2010确实支持Unicode,所以应该没有问题。但是我有问题,如果我没有在idHTTP中设置字符集/代码页,这可能是错误的吗?当您向服务器发送请求时,您没有设置字符集(除非您向服务器发送文本)。服务器会告诉您它在响应中发送给您的文本的字符集编码。如果检测到该字符集,最新版本的Indy 10将使用该字符集对文本进行解码。如果使用错误的字符集来解码文本,可能会导致问题。我有Delphi2010。我在idHttp中使用内存流,所以idHttp不会将字符更改为其他代码。我没有设置字符集/代码页。迈克尔:因为您正在下载到TMemoryStream
,所以您正在接收原始编码数据。然后,您自己负责解码数据,然后才能正确显示数据。最好让印地替你解码。除了写句子来描述你所做的之外,请复制并粘贴你的代码。此外,请使用此页面底部的“联系我们”链接,要求管理员将您的多个帐户合并为一个帐户。