ala-x писал(а):Например на обычном сайте заполнение полей - это webbrowser1.documentall ("xxx").value =text1.text А каким образом узнать значение полей во флеше и заполнить их? Ведь код флеша просмотреть почти не возможно.
Private q As WinHttpRequest
Private Sub Form_Load()
Set q = New WinHttpRequest
q.Open "GET", "http://ya.ru/?parametr1=" & UrlEncode("значение1") & "¶metr2=" & UrlEncode("значение2"), False
'для GET:
q.Send
'для POST:
' q.Send "parametr3=" & UrlEncode("значение3") & "¶metr4=" & UrlEncode("значение4")
If q.Status = 200 Then
MsgBox q.ResponseText
End If
End Sub
Private Function UrlEncode(urlText As String) As String
Dim i As Long, ansi() As Byte, ascii As Byte, encText As String
ansi = urlText
encText = ""
For i = 0 To UBound(ansi)
ascii = ansi(i)
Select Case ascii
Case 48 To 57, 65 To 90, 97 To 122
encText = encText & Chr$(ascii)
Case 32
encText = encText & "+"
Case Else
If ascii < 16 Then
encText = encText & "%0" & Hex$(ascii)
Else
encText = encText & "%" & Hex$(ascii)
End If
End Select
Next i
UrlEncode = encText
End Function
Filyus писал(а):Private Function UrlEncode(urlText As String) As String
Хакер писал(а):Filyus , что такое ansi() в твоём коде?
s = UrlEncode(StrConv("строка", vbFromUnicode))
ansi = urlText
ansi = StrConv(urlText, vbFromUnicode)
Filyus писал(а):
- Код: Выделить всё
Case 32
encText = encText & "+"
Qwertiy писал(а):Filyus писал(а):
- Код: Выделить всё
Case 32
encText = encText & "+"
Должно быть "%20", а не "+", кстати.
Filyus писал(а):пробел давно уже на "+" везде в запросах заменяется.
Qwertiy писал(а):Filyus писал(а):пробел давно уже на "+" везде в запросах заменяется.
Только в поисковых запросах.
In particular, encoding the query string uses the following rules:
Letters (A-Z and a-z), numbers (0-9) and the characters '.','-','~' and '_' are left as-is
SPACE is encoded as '+' or %20 [8]
All other characters are encoded as %FF hex representation with any non-ASCII characters first encoded as UTF-8 (or other specified encoding)
URLs cannot contain spaces. URL encoding normally replaces a space with a + sign.
Filyus писал(а):Байтовый массив.
Код: Выделить всё
s = UrlEncode(StrConv("строка", vbFromUnicode))
правильней вот так использовать. Это старая версия функции, поэтому сперва неправильно вспомнил как использовать.
Или можно заменить
Хакер писал(а):Убивать надо за такое. В жестокой форме.
Хакер писал(а):Стандартое говно, а не стандартный приём.
Конвертировать строку из Юникода в тупорылую-однобайтовую-кодировку, ради выполнения какой-то примитивной криво-написанной операции — это чудовищное преступление. Неотравтимое, и такое же тупое и бессмысленное, примерно как преобразование цветного фильма в чернобелый или как преобразование вордовского файла в скриншот вордовского файла.
Filyus писал(а):Это к разработчикам сайтов надо обращаться, не ко мне.
Хакер писал(а):Filyus писал(а):Это к разработчикам сайтов надо обращаться, не ко мне.
Причём тут разработчики сайтов?
Filyus писал(а):Они же до сих пор используют Windows-1251-кодировку, а я только клиент пишу.
Хакер писал(а):Filyus писал(а):Они же до сих пор используют Windows-1251-кодировку, а я только клиент пишу.
—Что, все разработчики всех сайтов в мире используют кодировку Windows-1251?
—Чушь!
От общемирового множества сайтов доля сайтов, которые понимают только Win1251 — ничтожна. Только русские сайты могут обладать таким дурным качеством, как поддержка только этой кодировки. К сайтам на всех остальных языках это явно не относится. И я полагаю, реально из русских сайтов не дружат с юникодом, а требуют входных данных именно в win1251 — не больше половины сайтов.
Даже если какой-то конкретный сайт понимает именно (и только) Win1251, то у тебя юникодная строка генерируется не в Win1251, а в случайно взятую кодировку. Да, именно в случайно взятую. Потому что StrConv конвертирует из юникода не в Win1251, а в кодировку X. Где X — кодировка, выбранная в системных настройках. То что X окажется именно Win1251 — это наивнейшее предположение. Это значит создавать софт, который будет работать только на русской винде, или на винде, на которой надо предварительно лезть в языковые настройки.
Некриминально, но предельно тупо: проверять, что текущая кодировка по-умолчанию для неюникодных приложений это именно Windows-1251, и использовать StrConv только в этом случае, а в противном выдавать ошибку и ничего не делать.
А вот конвертировать без проверки, конвертировать в неизвестно какую кодировку — это криминально.
Если заранее известно, что софт будет запускаться на русской винде (а в россии винды в основном русские), то какой смысл все усложнять.Хакер писал(а): Это значит создавать софт, который будет работать только на русской винде, или на винде, на которой надо предварительно лезть в языковые настройки.
ger_kar писал(а):Если заранее известно, что софт будет запускаться на русской винде (а в россии винды в основном русские), то какой смысл все усложнять.
Filyus писал(а):Я написал с StrConv только для примера. Не пугать же участников функцией WideCharToMultiByte.
Ну вообще конечно странно, функция StrConvкак раз и задумывалась же для гибкости и гибкость этой функции наоборот благо, так как выходной результат зависит, не от фазы луны, а от настроек кодировки, которые доступны для изменения любому пользователю виндов, без перекомпиляции приложения. Т.е. нужно перенастроить пожалуйста, ноу проблем. А если жестко кодируется в кодировку которую задал программер, а юзеру нужно будет иное, то как раз и будет обломус юзеру . Конечно хорошо если бы все было кодировко-независимым, но пока такового нет...Хакер писал(а):Правильная позиция: я написал с WideCharToMultiByte. Не учить же участников неправильному функцией StrConv.
Ну такStrConv таковой же по сути и является, только целевая кодировка задается в настройках системы, что собственно и соответствует концепции заложенной разработчиками и StrConv как раз и соответствует этой концепции, разве не так?Хакер писал(а):Либо делать функцию, которая в обязательном порядке имеет аргумент «целевая кодировка».
ger_kar писал(а):Ну вообще конечно странно, функция StrConvкак раз и задумывалась же для гибкости и гибкость этой функции наоборот благо, так как выходной результат зависит, не от фазы луны, а от настроек кодировки, которые доступны для изменения любому пользователю виндов, без перекомпиляции приложения.
ger_kar писал(а):Если заранее известно, что софт будет запускаться на русской винде (а в россии винды в основном русские), то какой смысл все усложнять.
Сейчас этот форум просматривают: YaCy [Bot], Yandex-бот и гости: 12