The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"CGI проблема с кодировкой запроса"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (web-разработка, CGI)
Изначальное сообщение [ Отслеживать ]

"CGI проблема с кодировкой запроса"  +/
Сообщение от siesit (ok) on 18-Янв-11, 11:41 
Друзья помогите, совсем запарился с кодировкой, начну по порядку:
Виндовый хостинг
сайт в UTF8
CGI приложение принимает запрос полученный скажем через $REQUEST_URI вот это*:
%D1%82%D1%83%D1%82_%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE_%D1%81%D0%B0%D0%BC_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81
после декодирования (URLDecoder) получаю это*:
тут_собственно_сам_запрос
вот этим (в разных вариациях) пытаюсь привести в нормальный вид но все тщетно  :xz:


Procedure.s Unicode2Ansi(*Unicode,UniLen.l)
  ;/ *Unicode [in]  Points To the wide-character string To be converted.
  ;/ UniLen   [in]  Specifies the number of wide characters in the string pointed to by the lpWideCharStr parameter. If this value is -1, the string is assumed to be null-terminated and the length is calculated automatically. The length will include the null-terminator.
  ;/ string   [out] The translated (ANSI) string.
  Protected Ansi.s,AnsiLen.l
  AnsiLen = WideCharToMultiByte_(#CP_ACP,0,*Unicode,UniLen,0,AnsiLen,0,0)
  If AnsiLen
    Ansi = Space(AnsiLen)
    If WideCharToMultiByte_(#CP_ACP,0,*Unicode,UniLen,@Ansi,AnsiLen,0,0);"•",#True)
      ProcedureReturn Ansi
    EndIf
  EndIf
  ProcedureReturn ""
EndProcedure

самое интересное что $SCRIPT_NAME приходит в нормальной кодировке, проблема наблюдается только в POST\GET запросах

1) как можно это преобразовать?
2) может апачка криво настроена?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "CGI проблема с кодировкой запроса"  +/
Сообщение от siesit (ok) on 19-Янв-11, 11:11 
проблему преобразования решил следующим кодом:

Procedure.s UTF8toMB(U2S.s)
#CP_UTF8=65001
*u2s_out = AllocateMemory(1024)
l = MultiByteToWideChar_(#CP_UTF8,0,@U2S,-1,0,0)
l = MultiByteToWideChar_(#CP_UTF8,0,@U2S,-1,*u2s_out,l)
l = WideCharToMultiByte_(#CP_ACP,0,*u2s_out,-1,0,0,0,0)
u2s_out2.s = Space(l)
l = WideCharToMultiByte_(#CP_ACP,0,*u2s_out,-1,@u2s_out2,l,0,0)
FreeMemory(*u2s_out)
ProcedureReturn u2s_out2
EndProcedure

Спасибо!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру