3

我需要你的帮助。请帮我。

我有德尔福 2010

我尝试 idHTTP.Get 一个带有 Unicode 文本(俄语)的文件从站点到 Windows 7 英文版的 MemoryStream 中。

然后我将这个带有 Unicode 文本的 MemoryStream 加载到例如 Memo 中。

如果我在控制面板中将俄语设置为“非 Unicode 程序的语言”,则文本会正确显示在备忘录中。但是如果我设置 Enlish - 我会得到错误的字符 (*$^#~!@)。

如何使用 idHTTP.Get 从站点加载 Unicode 中的俄语文本并在任何 Windows(中文、英文等)中正确显示?

谢谢你的帮助!!!

4

3 回答 3

1

TMemo 需要 Unicode(UTF-16 编码)文本。如果您使用TIdHTTP.Get()填充.TStreamTMemo

假设网络服务器正在为响应标头中的文本指定正确的字符集,然后使用TIdHTTP.Get()返回 a的版本StringTIdHTTP将为您检测字符集并将原始数据解码为 Unicode,例如:

Memo1.Text := IdHTTP1.Get('http://addr_here');
于 2011-06-10T21:18:09.980 回答
1

我建议更新到支持 Unicode 的最新 Delphi 版本。

更新:看起来内存流实际上在特定代码页中包含 AnsiText,而不是真正的 Unicode 文本。您可以使用该代码页声明适当的 AnsiString 变量,将文本加载到该变量中,然后将该变量加载到备忘录中。

如果没有看到真实数据,很难说出更多信息。

于 2011-06-07T16:58:41.803 回答
-1
  • 更新到 D2009 或更高版本
  • 使用支持 unicode 的组件(我记得TMS提供了一些组件)
  • 为您使用的语言正确设置字符集/代码页
于 2011-06-07T17:12:38.893 回答