我需要你的帮助。请帮帮我。
我有Delphi 2010
我尝试idHTTP。在英文版Windows 7上从站点获取带有Unicode文本(俄语)的文件到MemoryStream。
然后我将这个带有Unicode文本的MemoryStream加载到例如Memo。
中如果我在控制面板中将俄语设置为“非Unicode程序的语言”,则文本会在备忘录中正确显示。但如果我设置Enlish - 我会得到错误的字符(* $ ^#〜!@)。
如何从网站加载带有idHTTP.Get的Unicode的俄文文本,并在任何Windows(中文,英文等)中正确显示???
谢谢你的帮助!!!
答案 0 :(得分:1)
我建议更新到最近启用Unicode的Delphi版本。
更新:看起来内存流实际上包含特定代码页中的AnsiText而不是真正的Unicode文本。您可以使用该代码页声明适当的AnsiString变量,将文本加载到该变量中,然后将该变量加载到备忘录中。
如果没有看到真实的数据,很难说清楚。
答案 1 :(得分:1)
TMemo期望Unicode(UTF-16编码)文本。如果您使用填充TIdHTTP.Get()
的{{1}}版本下载文本,那么您正在下载原始(通常是Ansi编码)文本,然后负责将其手动解码为Unicode,然后再分配到TStream
。
假设网络服务器为响应标头中的文本指定了正确的字符集,请使用返回TMemo
的{{1}}版本。 TIdHTTP.Get()
将检测字符集并将原始数据解码为Unicode,例如:
String
答案 2 :(得分:-1)