Форум: "Сети";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Внизкириллица в ссылке Найти похожие ветки
← →
marcel (2005-10-07 10:36) [0]Имеется у меня следующее.
WinXP, Apache 2.0.43. CGI-приложение написанное на Дельфи(далее project1.exe).
Во такая у меня проблемы.
project1.exe формирует HTML-страничку, где сть ссылка подобного вида .....project1.exe?var1=наименование. Т.е. значение переменной var1 - строка, состоящая из кириллицы. При переходе на эту ссылку в адресной строке кириллическое значение заменяется кодами вида %ХХ. Скриптом все обрабатывается нормально, даннные выдаются корректные. Но только если пользоваться браузером Opera или Firefox. Если же Internet Explorer"ом, то при переходе на такую ссылку в адресной строке отображается кириллица так как есть, но в скрипт попадает тарабарщина %ХХ. Когда разрабатывался project1.exe (года два назад. тогда правда Apache стоял на Win98) в Эксплорере все проверялось и все работало. В какой момент появился глюк - сказать не могу, т.к. сам прользуюсь Oper"ой - а там все работает. Вопрос в следующем - что делать? :)
1. Можно ли что-то указать в настройках Explorer"a, Apache?
2. Можно проверять с какого браузера было обращение и перекодировать соответствующие поля, но....Где взять соответствующую таблицу перекодировки или хотя бы по каким ключевым словам искать в инете?
Прбовал менять в свойствах Explorer"a "Всегда отправлять адреса в UTF-8". Не помогло.
← →
marcel (2005-10-07 10:52) [1]Пока писал вопрос - осенило и попоробовал следующее.
Запустил подобную ситуацию где Apache на Win98. Здесь в Explorer"e все замечательно работает. Т.е. проблема в том, что Apache у меня на XP? Может есть идеи?
← →
atruhin © (2005-10-09 10:56) [2]>>2. Можно проверять с какого браузера было обращение и перекодировать >>соответствующие поля, но....Где взять соответствующую таблицу >>перекодировки или хотя бы по каким ключевым словам искать в инете?
Описание HTTP протокола. Никакой таблицы в принципе не нужно. Формат %код символа. Примерно так:
Tmp := Pos("%", fAddress); // восстанавливаем шестнадцатиричные символы
while Tmp <> 0 do begin
try
Ch := StrToInt("$"+copy(fAddress,Tmp + 1, 2));
fAddress[Tmp] := char(Ch);
delete(fAddress, Tmp + 1, 2);
except
end;
Tmp := Pos("%", fAddress);
end;
← →
denissoft © (2005-10-09 18:29) [3]function FormatStringforCGI(str: string): string;
var
i: integer;
begin
for i := 1 to Length(str) do
begin
if str[i] in ["a".."z", "A".."Z", "0", "1".."9"] then
Result := Result + Str[i]
else if Str[i] = " " then
Result := Result + "+%20+"
else
Result := Result + "%" + IntToHex(Byte(Str[i]), 2);
end;
end;
← →
marcel (2005-10-10 09:59) [4]Я вас немножко обманул. %хх здесь практически не причем.
Сдается мне, что когда IE отправляет запрос к Apache(WinXP), то кириллица перекодируется в ...даже не знаю, UTF-8, что ли?
Т.е. на страничке и в HTML коде вместо"Привет я тут"
,
выводится"I?eaao y ooo"
А когда Apache на Win98, то такой байды не происходит, хотя обращаешься из тогоже окна IE.
Можно в web-приложении как-то определить/перекодировать ответ из Юникода в 1251? Или может IE или Apache как-нить рога вправить?
← →
ShiFT (2005-10-10 10:15) [5]
uses HTTPApp
URI := "project1.exe?var1=" HTMLEncode("наименование");
← →
ShiFT (2005-10-10 10:17) [6]
uses HTTPApp;
URI := "project1.exe?var1=" + HTMLEncode("наименование");
← →
marcel (2005-10-10 11:28) [7]>ShiFT
Такой ф-ции не нашел. Написал свою. Все элементарно. Вроде работает при любых комбинациях браузер/операционка.
function StringToHex(s:string):string;
var i:word;
sResult:string;
begin
sResult:="";
for i:=1 to length(s) do
sResult:=sResult+"%"+IntToHex(ord(sResult[i]),2);
Result:=sResult;
end;
Но факт остается фактом. Если через IE переходить по ссылке с чистой кириллицей к Apache на XP, то с кодировкой не лады. Может кто-то у попробует смоделировать?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c