Преобразовать кирилицу в "%D8%EE..." (+)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 10.11.2004 (Ср) 17:55
Откуда: Moscow ct.

Преобразовать кирилицу в "%D8%EE..." (+)

Сообщение DDK » 13.11.2004 (Сб) 14:47

Какой процедурой мона стринг-переменную преобразовывать, содержащую русские символы в формат типа "%D8%EE%EA%EE%EB%E0%E4%ED%E0%FF" ???

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.11.2004 (Сб) 15:57

Код: Выделить всё
Function Encode(ByVal s As String) As String
While Len(s)
    Encode = Encode & "%" & Right("00" & Hex(Asc(s)), 2)
    s = Mid(s, 2)
Wend
End Function
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.11.2004 (Сб) 17:07

Во-первых, 0 может быть и один :)
Во-вторых, почему не string-версии функций? :)
В-третьих, в данном конкретном случае сработает функция Format$ вместо right$ :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.11.2004 (Сб) 17:14

GSerg писал(а):Во-первых, 0 может быть и один :)

Ага, сэкономил два байта оперативки ;-)
GSerg писал(а):Во-вторых, почему не string-версии функций? :)

А от лени :-P
Согласен, что с ними будет быстрее.
GSerg писал(а):В-третьих, в данном конкретном случае сработает функция Format$ вместо right$ :)

Дык это я ещё по старой QBasic-ной памяти Right юзаю...
Да и быстрее это, поди?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.11.2004 (Сб) 17:20

В принципе да :)
Но один mid на каждом шаге чего стоит - это ж redim каждый раз :) Мож лучше-таки asc(mid$)?
Или - о! - перед началом всего этого strconv в byte(), после чего элементарно без всяких mid и asc? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 10.11.2004 (Ср) 17:55
Откуда: Moscow ct.

Сообщение DDK » 13.11.2004 (Сб) 18:04

Э... а вы про меня то забыли :)). Так чё мне лучше использовать то ? :)
Яндекс - найдётся всё. Google - найдёт всё, что не нашёл яндекс.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.11.2004 (Сб) 21:46

GSerg писал(а):Но один mid на каждом шаге чего стоит - это ж redim каждый раз :) Мож лучше-таки asc(mid$)?

А смысл? Всё равно, на каждом шаге создаётся новая строка.

GSerg писал(а):Или - о! - перед началом всего этого strconv в byte(), после чего элементарно без всяких mid и asc? :)

Ага... Но я старался показать наиболее понятный новичку способ ;-)
Я не сомневаюсь, что Крутые Парни для такого дела ассемблерную вставку заюзают :-D
Изображение

DDK
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 10.11.2004 (Ср) 17:55
Откуда: Moscow ct.

Сообщение DDK » 13.11.2004 (Сб) 22:23

Спасибо, спасибо всем ! :) Мне и этого хватит :)
Яндекс - найдётся всё. Google - найдёт всё, что не нашёл яндекс.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList