Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.038 c
11-1116963540
sormy
2005-05-24 23:39
2006.01.22
Сохранить все позиции ListBox a, а затем их вернуть как?


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


3-1132829235
FesSumy
2005-11-24 13:47
2006.01.22
F1! Экспорт из DBF в XML.


14-1135478240
za Blender
2005-12-25 05:37
2006.01.22
Поддерживает ли Blender 2.40 русский язык?


1-1135025594
Volf_555
2005-12-19 23:53
2006.01.22
Как в Delphi создать собственное хранилище файлов и папок?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский