Исходя из того, что вы написали в ваш собственный ответ , похоже, проблема в том, как клиентская сторона кодирует строку, а не в том, как сервер интерпретирует ее (хотя сервер должен взаимодействовать) независимо от того, какую кодировку вы используете). Вы, очевидно, ожидаете, что он будет закодирован как UTF-8 (это значение по умолчанию для StreamReader
, если вы ничего не указали), но я не удивлюсь, если используемая вами библиотека NetMasters даже не будет знать о UTF-8 или любой другой форме Unicode.
Delphi 5 прекрасно справляется с Юникодом через тип WideString
, но в нем отсутствует множество вспомогательных функций поддержки. Если вы хотите сохранить свой код в NetMasters, то минимальным изменением для вас является введение библиотеки с поддержкой Unicode, такой как JclUnicode модуль из бесплатного JCL . Там вы можете найти функцию Utf8Encode
, которая получит WideString
и вернет AnsiString
, который затем подходит для передачи в вашу существующую функцию кодирования URL.
Лучше было бы вообще избавиться от кода NM. Бесплатная Indy библиотека имеет функции для кодирования UTF-8 и URL-кодирования, а также для всех других ваших задач, связанных с Интернетом.
Если вы не используете Unicode на стороне клиента, то нет никаких оснований ожидать, что символ «£» будет когда-либо кодироваться как двухбайтовая последовательность c2 a3
. Это UTF-8-кодированная форма U + 00a3, кодовая точка для символа фунта.
Если вы не используете Unicode на клиенте, то вам необходимо выяснить, какую кодовую страницу вы используете . Затем укажите эту кодировку на сервере при создании нового StreamReader
.