Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизURL Encode Найти похожие ветки
← →
__ivan (2007-10-11 10:54) [0]Есть такая функция, которая занимается преобразованием символов в url-"%hex" запросы (URLEncode - он ниже). Все бы хорошо, но я беру для примера Google.com и делаю запрос браузером: "тестирование русского текста", получаю:
http://www.google.com/search?hl=en&q=%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B3%D0%BE+%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0&btnG=Search
Используя же функция ниже, получаю
%F2%E5%F1%F2%E8%F0%EE%E2%E0%ED%E8%E5%20%F0%F3%F1%F1%EA%EE%E3%EE%20%F2%E5%EA%F1%F2%E0
Что делает браузер? Он отправляет юникодом?function UrlEncode(S : String) : string;
var
I : Integer;
begin
Result := "";
for I := 1 to Length(S) do begin
if AnsiChar(S[I]) in ["0".."9", "A".."Z", "a".."z"] then
Result := Result + S[I]
else
Result := Result + "%" + IntToHex(Ord(S[I]), 2);
end;
end;
Как мне исправить или переписать эту функцию или где посмотреть адаптированный вариант?
← →
umbra © (2007-10-11 11:07) [1]посмотрите в исходниках indy реализацию метода
TIdURI.PathEncode
← →
__ivan (2007-10-11 11:16) [2]Да вот она, но она на самом деле аналогична той, что я привел выше и результат работы соответственно тоже.
function PathEncode(ASrc: string): string;
const
UnsafeChars = ["*", "#", "%", "<", ">", "+", " "]; {do not localize}
var
i: Integer;
begin
Result := "";
for i := 1 to Length(ASrc) do begin
if (ASrc[i] in UnsafeChars) or (ASrc[i] >= #$80) then begin
Result := Result + "%" + IntToHex(Ord(ASrc[i]), 2); {do not localize}
end else begin
Result := Result + ASrc[i];
end;
end;
end;
%F2%E5%F1%F2%E8%F0%EE%E2%E0%ED%E8%E5%20%F0%F3%F1%F1%EA%EE%E3%EE%20%F2%E5%EA%F1%F2%E0
← →
Anatoly Podgoretsky © (2007-10-11 11:58) [3]> __ivan (11.10.2007 10:54:00) [0]
Что ты подал на вход функции.
Насчет Юникода - не используется при работе в Сети, только 8 битные символы.
← →
umbra © (2007-10-11 12:02) [4]она не аналогична той, что привели вы.
Кроме того, вы привели неполную строку запроса. в полной строке обычно есть параметры ie - кодирование ввода oe - кодирование вывода. И у меня там написано - utf8
← →
Dmitry S © (2007-10-11 16:19) [5]
> Насчет Юникода - не используется при работе в Сети, только
> 8 битные символы.
Да ну:)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c