powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Перекодировка УРЛ-ов
17 сообщений из 17, страница 1 из 1
Перекодировка УРЛ-ов
    #35539425
mys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mys
Гость
Вот имеем к примеру такой УРЛ:
http://yandex.ru/yandsearch?text=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&clid=9582&lr=187
Возможно ли перекодировать значение переменной text из UTF-8 в читабельный вид средствами Каше? Поидее, перекодировка должна производиться с помощью $zcvt("http://yandex.ru/yandsearch?text=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&clid=9582&lr=187","I","URL")
но на выходе получем что-то типа http://yandex.ru/yandsearch?text=?????????µ??&clid=9582&lr=187
В каше используется кодировка ср1251.
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35539595
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
zzdump $zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL")
  0000 : 3F 3F 3F 3F 3F 3F 3F 3F 3F B5 3F 3F

Закодировано слово "Пример"
Причем
1. Если сделать в каше $zcvt("Пример","O","URL") и подставить это в строку поиска яндекса, то это будет работать
2. Число символов в строке яндекса - 12, а в слове пример 6
сравните
Код: plaintext
1.
2.
w $zcvt($zcvt("Пример","O","UTF8"),"O","URL")
%D0%9F%D1% 80 %D0%B8%D0%BC%D0%B5%D1% 80 
(правда вторая буква у вас какая-то странная).

То есть при отправке адрес переводится в юникод и затем кодируется через %

Но как решить вашу проблему - я не знаю
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35539734
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Возможно ли перекодировать значение переменной text из UTF-8 в читабельный вид средствами Каше?

Это не просто UTF8 - это escape кодированый UTF8.

Код: plaintext
1.
2.
3.
4.
5.
s a="http://yandex.ru/yandsearch?text=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&clid=9582&lr=187"
 
w $ZCVT($ZCVT(a,"I","URL"),"I","UTF8")

http://yandex.ru/yandsearch?text=пример&clid= 9582 &lr= 187 
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540389
mys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mys
Гость
Код: plaintext
1.
w $zcvt($zcvt("пример","O","UTF8"),"O","URL")
%D0%BF%D1% 80 %D0%B8%D0%BC%D0%B5%D1% 80 
Да, действительно, данная операция осуществляет нормальную перекодировку. Однако обратная:
Код: plaintext
1.
w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
????????????
работать не хочет, а должна...
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540494
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотреть на zzdump, то видно, что обратной перекодировки не происходит - все символы одинаковые. То ли что-то делать с таблицей перекодировки, то ли писать свой перекодировщик :-(
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540533
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрит внимательно ... дык вы последовательность то соблюдайте

RAW в данном случае = cp1251

Строка(URL_coded_UTF8) -> $ZCTV(xxx,"I","URL") = Строка(UTF8) -> $ZCTV(xxx,"I","UTF8") = Строка(RAW)

Строка(RAW) -> $ZCTV(xxx,"O","UTF8") = Строка(UTF8) -> $ZCTV(xxx,"O","URL") = Строка(URL_coded_UTF8)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
>s a="http://yandex.ru/yandsearch?text=%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&clid=9582&lr=187"
 
>s b=$ZCVT($ZCVT(a,"I","URL"),"I","UTF8") w !,b

http://yandex.ru/yandsearch?text=пример&clid= 9582 &lr= 187 

>s x=$ZCVT($ZCVT(b,"O","UTF8"),"O","URL") w !,x

http%3A//yandex.ru/yandsearch%3Ftext%3D%25D0%25BF%25D1% 2580 %25D0%25B8%25D0%25BC%
25D0%25B5%25D1% 2580 %26clid%3D9582%26lr%3D187

Правда в результате получается немного не то (URL преоброзование кодирует лишнее ) - следовательно URL сначала нужно парсить - сначало до пораметров (?) и потом каждый параметр отедельно (&)
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540536
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>работать не хочет, а должна

А у Вас кодировка то родная в терминале какая ? (вон тут в соседней теме проблемы с отображением в зависимости от настроект терминала)

Результат в глобал сохраните - там тоже строка из "????"
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540541
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
пример
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35540986
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptn
Код: plaintext
1.
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
пример


Код: plaintext
1.
w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
????????????
Cache for Windows (x86-32) 2008.1.1 (Build 578) Thu Jun 26 2008 16:38:28 EDT

Ptn, у вас какая версия?
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35541012
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
/// Cache for Windows NT (Intel)  5 . 0 . 5  (Build  936  AdHoc  2014 ) Thu Nov  18   2004   18 : 01 : 09  RST

USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
пример

USER>w $zm,!! d DispIOProc^%NLSMISC
RY\CP1251\K\RAW\
 
 
Process I/O       Offset:Type     Name
-----------       -------------   ----
Process           E60402:ByteStr  RAW
Direct Term       E60402:ByteStr  RAW
Telnet/LAT        E60402:ByteStr  RAW
File              E60402:ByteStr  RAW
Magtape           E60402:ByteStr  RAW
Network           E60402:ByteStr  RAW
DSM-DDP           E60402:ByteStr  RAW
DTM-DCP           E60402:ByteStr  RAW
SysCalls          E60402:ByteStr  RAW
Printer           E60402:ByteStr  RAW

///Cache-8bit 
///Cache for Windows (x86- 64 )  2008 . 1 . 1  (Build  578 ) Thu Jun  26   2008   14 : 09 : 54  EDT
// Сетевая кодировка ISO
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
????????????

// Сетевая кодировка Windows
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
????????????

// Сетевая кодировка UTF8
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
????????????

USER>w $zm,!! d DispIOProc^%NLSMISC
RY\CP1251\K\RAW\
 
 
Process I/O       Offset:Type     Name
-----------       -------------   ----
Process           2010402 :ByteStr  RAW
Direct Term       2010402 :ByteStr  RAW
Telnet/LAT        2010402 :ByteStr  RAW
File              2010402 :ByteStr  RAW
Magtape           2010402 :ByteStr  RAW
Network           2010402 :ByteStr  RAW
DSM-DDP           2010402 :ByteStr  RAW
DTM-DCP           2010402 :ByteStr  RAW
SysCalls          2010402 :ByteStr  RAW
Printer           2010402 :ByteStr  RAW


/// Ensemble - Unicode 
///Cache for Windows (x86- 64 )  2008 . 1 . 1  (Build 579U) Wed Jul  2   2008   15 : 50 : 19  EDT
// Сетевая кодировка ISO
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
??N??z???чN?

// Сетевая кодировка Windows
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
РїС?РёР?РчС?

// Сетевая кодировка UTF8
USER>w $zcvt($zcvt("%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80","I","URL"),"I","UTF8")
пример

USER>w $zm,!! d DispIOProc^%NLSMISC
RY\LatinC\K\UTF8\
 
 
Process I/O       Offset:Type     Name
-----------       -------------   ----
Process          21E0402:ByteStr  RAW
Direct Term      21E040A:ByteStr  UTF8
Telnet/LAT       21E0402:ByteStr  RAW
File             21E040A:ByteStr  UTF8
Magtape          21E0402:ByteStr  RAW
Network          21E0402:ByteStr  RAW
DSM-DDP          21E0402:ByteStr  RAW
DTM-DCP          21E0402:ByteStr  RAW
SysCalls         21E0402:ByteStr  RAW
Printer          21E0922:ByteStr  CP1251

Вот такая беда. Перенос кода в программу с последующим её вызовом не помог.

ЗЫ: возможно есть смысл посмотреть соседню ветку про NLS а возможно есть повод обратиться в WRC
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #35541101
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мы у себя не стали с этим париться, а просто экспортнули таблицу трансляции URL из 5.0 и вгрузили её в 2008.1.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Перекодировка УРЛ-ов
    #37071305
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че-то или я торможу, или лыжи не тем смазаны
В одну сторону перекодруется, а назад уже нет.

Код: plaintext
1.
2.
3.
4.
>w $zcvt("Привет","O","URL")
%CF%F0%E8%E2%E5%F2

>w $zcvt("%CF%F0%E8%E2%E5%F2","I","URL")
??????

Причем, если я вот это %CF%F0%E8%E2%E5%F2 передаю как параметр URL, а потом ловлю его через %request.Get(), то принимается нормально. В чем причина?
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #37071478
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

у меня выходит
Код: plaintext
1.
2.
3.
>w $zcvt("рот","O","URL")
%u0440%u043E%u0442
>w $zcvt("%u0440%u043E%u0442","I","URL")
рот
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #37071499
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня стоит unicode, может дело в этом
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #37071533
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barl_alibekу меня стоит unicode, может дело в этом
Я вот тоже спробанул...

Код: plaintext
1.
2.
3.
4.
5.
REG>w $zcvt("рот","O","URL")
%F0%EE%F2
REG>w $zcvt("%u0440%u043E%u0442","I","URL")
рот
REG>w $zv
Cache for Windows (x86-64) 2009.1.3 (Build 704_0_9104) Mon Mar 8 2010 17:00:35 EST
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #37072211
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм, у меня тоже
Код: plaintext
1.
2.
>w $zcvt("%u0440%u043E%u0442","I","URL")
рот
Какая-то несимметричная перекодировка, странно.
...
Рейтинг: 0 / 0
Перекодировка УРЛ-ов
    #37072240
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

я тоже заметил иксДЭ
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Перекодировка УРЛ-ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]