32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 877
1

Не могу найти функцию urlencode\urldecode

03.06.2015, 12:30. Показов 3240. Ответов 8
Метки нет (Все метки)

Перерыл гугл, нашол одну рабочию, но она не работает с русскими символами, мб хто подскажит как можно исправить эту или где взять рабочию

C++ (Qt)
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
inline unsigned char to_hex( unsigned char x )  
        {
            return x + (x > 9 ? ('A'-10) : '0');
        }
 
        const std::string urlencode( const std::string& s )  
        {
            std::ostringstream os;
 
            for ( std::string::const_iterator ci = s.begin(); ci != s.end(); ++ci )
            {
                if ( (*ci >= 'a' && *ci <= 'z') ||
                     (*ci >= 'A' && *ci <= 'Z') ||
                     (*ci >= '0' && *ci <= '9') )
                { // allowed
                    os << *ci;
                }
                else if ( *ci == ' ')
                {
                    os << '+';
                }
                else
                {
                    os << '%' << to_hex(*ci >> 4) << to_hex(*ci % 16);
                }
            }
 
            return os.str();
        }
 
        inline unsigned char from_hex (
            unsigned char ch
        ) 
        {
            if (ch <= '9' && ch >= '0')
                ch -= '0';
            else if (ch <= 'f' && ch >= 'a')
                ch -= 'a' - 10;
            else if (ch <= 'F' && ch >= 'A')
                ch -= 'A' - 10;
            else 
                ch = 0;
            return ch;
        }
 
        const std::string urldecode (
            const std::string& str
        ) 
        {
            using namespace std;
            string result;
            string::size_type i;
            for (i = 0; i < str.size(); ++i)
            {
                if (str[i] == '+')
                {
                    result += ' ';
                }
                else if (str[i] == '%' && str.size() > i+2)
                {
                    const unsigned char ch1 = from_hex(str[i+1]);
                    const unsigned char ch2 = from_hex(str[i+2]);
                    const unsigned char ch = (ch1 << 4) | ch2;
                    result += ch;
                    i += 2;
                }
                else
                {
                    result += str[i];
                }
            }
            return result;
        }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2015, 12:30
Ответы с готовыми решениями:

Алгоритм urldecode / urlencode
Есть ли у кого нить алгоритм шифровки расшифровки адреса URI?

В чем разница между Server.UrlDecode и HttpUtility.UrlDecode()?
в чем разница между Server.UrlDecodeи HttpUtility.UrlDecode()?

Не могу найти функцию
html_spellcount_only Кто нибудь знает на каком она сайте, склонение...

Не могу найти функцию
Есть строка в функции: ВозвратЗнач= ПолучитьОписаниеВещи(Вещь,Ложь); Не могу найти описание...

8
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
03.06.2015, 12:41 2
С++ Builder. Они там есть.
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 877
03.06.2015, 16:23  [ТС] 3
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
С++ Builder. Они там есть.
у веня висуалка, а можешь из соего билдера исходник выдрать?
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
03.06.2015, 19:14 4
они по всей видимости на паскале как и все стандартные либы билдера
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
03.06.2015, 21:11 5
Ну вот выдрал. Там правда класс под эти дела а не функция.
Вложения
Тип файла: rar IdURI.rar (4.9 Кб, 17 просмотров)
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
03.06.2015, 21:35 6
да кстати функции itoa и cscanf в визуалке тоже нет что сам квадратноколесовелосипед изобретаеш по конверсии в HEX и обратно?
Ну если нужон велосипед:
C++
1
2
3
4
5
6
7
8
9
10
11
//байт в hex
CharToHex(char* Dst, unsigned char value){
      *(Dst++)=(value>>4)+'0';
      *(Dst++)=(value&0x0F)+'0';
}; 
//байт из Hex
unsigned char HexToChar(char Src*){
    unsigned char ret=*(Src++)-'0';
    ret|=(*(Src++)-'0')<<4;
    return ret;
}
HexToChar рассчитана на то что вход UPPER CASE и в правильных приделах ['0','A']. В ASCII специально для упрощения такой конверсии цифры поставили впритык перед заглавными буквами.
0
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 877
04.06.2015, 16:08  [ТС] 7
Fulcrum_013 ваща функция хекса работает с русской кодировкой? чёт результат серовно не положительный

Добавлено через 6 часов 14 минут
up.....
0
2055 / 1533 / 166
Регистрация: 14.12.2014
Сообщений: 13,345
04.06.2015, 16:34 8
С любой должна работать. Да кстати а ты уверен что там именно ASCII а не уникод на входе?
1
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 877
04.06.2015, 21:48  [ТС] 9
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да кстати а ты уверен что там именно ASCII а не уникод на входе?
да, в общем сделал так

C++
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
const std::string urlencode( const std::string& s )  
{
    std::ostringstream os;
    char t7[3] = {0};
 
    for ( std::string::const_iterator ci = s.begin(); ci != s.end(); ++ci )
    {
        if ( (*ci >= 'a' && *ci <= 'z') ||
            (*ci >= 'A' && *ci <= 'Z') ||
            (*ci >= '0' && *ci <= '9') )
        { // allowed
            os << *ci;
        }
        else if ( *ci == ' ')
        {
            os << '+';
        }
        else
        {
            sprintf_s(t7,3, "%X", ( unsigned char )*ci);
            os << '%' << t7;
        }
    }
 
    return os.str();
}
заработало
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 21:48
Помогаю со студенческими работами здесь

Не могу найти функцию
for i=1:length(h) out=MyInteg(y,a,b,h(i)); o=tub(a,b,h(i)); ...

Протабулировать функцию (не могу найти ошибку)
нужно протабулировать функцию y=sin(ln x)-cos(in x)+2ln x считает раз через раз правильно unit...

Не могу найти функцию ACPI в биосе, подскажите
проблема вот в чем пытаюсь создать виртуасьный диск в Alcohol он выдает ошибку &quot;Невозможно добавить...

Get_loaded_extensions. не могу вспомнить и найти похожую функцию
get_loaded_extensions возвращает массив всех расширений, помню что вроде была функция, которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru