0

我遇到了一个奇怪的问题,我无法找到任何答案。

我们使用德里 XE1 和 TidHttp.Get(...) 转换这些字母:

æøå ÆØÅ äö ÄÖ

给这些错误的字母:aoa AOA ao AO

哪个原因最终给了我们一个错误的 URL。我怀疑可能涉及一些 unicode 问题,但有人知道如何解决这个问题吗?我在调用 TidHTTP.Get(...) 时提供的 URL 是正确的,但目标服务器收到了错误的字母。Indy 以某种方式转换这些字母。

我不能发布任何编码示例。

最好的问候,布赖恩安徒生

4

1 回答 1

1

TIdHTTP.Get()返回的版本String使用服务器响应中指定的字符集将服务器的原始数据转换为 Unicode,如果未检测到字符集,则返回默认值。您遇到的症状是由于使用错误的字符集将原始数据转换为 Unicode 引起的。由于您没有显示实际的 HTTP 响应数据,因此很难判断 HTTP 响应是否有问题TIdHTTP。但是,XE1 有点老了,从那时起 Indy 的字符集处理也发生了变化,所以你应该升级到 Indy 的最新开发快照,看看问题是否仍然存在。

于 2013-10-08T08:43:52.667 回答