Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TRESTClient] Использование кодировок в TRESTClient


Kikoma

Вопрос

Здравствуйте, помогите настроить кодировки.

 

Ниже дано тестовое приложение, которое отправляет с помощью RESTClient запрос и получает в виде текста то что отправил.

Все работает замечательно, кроме русских букв.

 

В приложении задаю параметр и значение. при задании русских букв выводится коды

например вместо "Балалайка" выводится "A1C0CBC0CBC0C9CAC0"

ss.png

Help отсутствует, устал быть слепым экспериментирующим котенком :(

 

можно результат работы сервера увидеть здесь: http://abws.ru/testrest/?qqq=balalaika-Балалайка

 

Исходники приложения (Delphi XE6 update 2) здесь.

 

код сервера:

<?php
header("Content-Type: text/html; charset=utf-8");
echo "Your GET request: <br/>\n";
var_dump($_GET);
?>
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вы используете AnsiToUtf8

Попробуйте UTF8Encode и UTF8Decode. Или UTF8ToString.

В данном случае сложно, по крайней мере мне), понять - в чем может быть причина. Хотя когда-то сталкивался с аналогичной проблемой.

Ссылка на комментарий
  • 0

Странно, но AnsiToUtf8, UTF8Encode, UTF8Decode, UTF8ToString  - не влияют на результат в различном использовании и перед отправкой и после получения. Все их удалил.

 

Изменил строку формирование параметра:

RESTRequest1.Params.AddItem(edParam.Text, edValue.Text,TRESTRequestParameterKind.pkGETorPOST,[poDoNotEncode]);

Добавил в код сервера кириллицу. Результат получился следующий

<?php 
header("Content-Type: text/html; charset=utf-8");
echo "Проверка русского языка\n";
echo "Your GET request:\n";
var_dump($_GET);
?>

в результате вместо русских букв знаки вопроса:

Проверка русского языка
Your GET request: <br/>
array(1) {
  ["qqDF"]=>
  string(19) "balalaika-?????????"
}

Делаю вывод, что принимает и отображает приложение в utf-8 нормально. А вот проблема возникает при отправки запроса

Изменено пользователем Brovin Yaroslav
Ссылка на комментарий
  • 0

Проблема решена с использованием UTF8EncodeToShortString

 

Вот код:

RESTRequest1.Params.AddItem(
  UTF8EncodeToShortString(edParam.Text), 
  UTF8EncodeToShortString(edValue.Text),
  TRESTRequestParameterKind.pkGETorPOST,[poDoNotEncode]
);

Всем спасибо.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...