Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

кириллица в ссылке   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
14-1135598610
ctrl+c
2005-12-26 15:03
2006.01.22
qwertyuiop


2-1135800242
KvORubin
2005-12-28 23:04
2006.01.22
Пацаны, Как просто удалить файл???


2-1135697703
kyn66
2005-12-27 18:35
2006.01.22
Предотвратить появление Popup меню


9-1119771942
VolanD666
2005-06-26 11:45
2006.01.22
Анимация


2-1135754165
VadimSpb
2005-12-28 10:16
2006.01.22
Проблема с запросом