2017-03-05 75 views
2

随着德尔福7和Indy 9.00.10我使用REST API与JSON。 我用这样的TidHTTP组件创建一个GET请求。德尔福7 - 字符集REST JSON

IdHTTP1.HandleRedirects := True; 
IdHTTP1.ReadTimeout  := 5000; 
IdHTTP1.Request.Accept := 'application/json'; 
IdHTTP1.Request.AcceptCharSet := 'UTF-8'; 
IdHTTP1.Request.AcceptLanguage := 'sv'; 
IdHTTP1.Request.ContentType := 'application/json'; 
Memo1.Text := IdHTTP1.Get('http://api.arbetsformedlingen.se/af/v0/platsannonser/7088149'); 

我尝试了好几种字符集,但不能纠正瑞典字符,如A,A,ö在响应中。

  • A成为A¥
  • A成为澶
  • ö成为ö

我在做什么错在这里?

+0

回复与''开始。 –

+0

感谢您的额外信息。现在,当我尝试它时,我可以在备忘录中正确清晰地看到ä,ö和å字符,例如, “konsult om dusökerenvärldav” –

+0

奇怪的是,我仍然得到这个[链接](http://imgur.com/KbMADMb) Im使用Delphi 7与Indy 9.00.10 – Fusecube

回答

7

在德尔福7 System单位有UTF8ToAnsi()功能。使用这样的:

Memo1.Text := UTF8ToAnsi(IdHTTP1.Get('http://api.arbetsformedlingen.se/af/v0/platsannonser/7088149')); 

的结果是正确的在Delphi 7.

+0

你一直在这个话题非常有帮助。感谢你,我们得出结论:Delphi 7不支持Unicode。今年在2017年将UTF-8转换为ANSI版本只是感觉完全错误,但在这种情况下,它将是正确的选择。否则,我总是使用UTF-8! – Fusecube

+0

Delphi 7没有完整的Unicode支持。它的默认字符串类型使用ANSI编码。如果您希望在2017年获得完整的Unicode支持,请升级到新版本。 Delphi 7已超过15年。 –

+0

@TomBrunberg对不起,我的话是为了OP。 –