idhttp indy post, ne demande (paramètres) avec l'encodage utf-8

Je suis en train de poster une demande, en utf-8 toutefois, le serveur est en Ascii.

Essayé la TstringList format de post.

Essayé le format de flux de

Essayé de forcer le TStringStream avoir l'encodage UTF8.

Essayé la mise à jour d'indy à la xe5 indy

Voici un exemple de code:

var
  server:TIdHttp;
  Parameters,response:TStringStream;
begin
  response := TStringStream.Create;
  Parameters := TStringSTream.create(UTF8String('param1=Value1&param2=عربي/عرب&param3=Value3'),TEncoding.UTF8);
  Server.Post(TIdURI.URLEncode('http://www.example.com/page.php'),Parameters,response);
end;

Maintenant les Arabes de codage est passé en Ascii dans renifleur de réseau.

0060 d8 b9 d8 b1 d8 a8 d9 8a 2f d8 b9 d8 b1 d8 a8 26 ........ /......&

Comment puis-je la force d'Indy Http id pour passer les paramètres de la requête en Utf-8 et pas en Ascii?

Sur quoi avez-vous de la base de la conclusion que c'est de l'ascii? Le nombre d'octets et le motif semble suggérer qu'il contient UTF8 en effet. C'est juste le sniffer qui ignore l'encodage et l'affiche raw octets (le dump) et tente de les afficher sous forme ascii.
car unicode-table.com/en/#D8B9 d8b9 n'est pas un arabe lettre, niehter est little endian b9d8
Jetez un oeil à ce tableau: utf8-chartable.de/... Là, vous voyez que D8B9 en UTF-8 est la LETTRE ARABE AIN ou ع avec des points de code unicode U+0639. UTF-8 est faite pour être plus compact et plus compatible avec l'ASCII latine et l'encodage Ansi, mais une plage d'octets en UTF-8 n'est pas représentatifs de l'effectif de point de code unicode.

OriginalL'auteur none | 2013-11-10