Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Кодировать строку в нужный формат


Автор: Rodman 16.8.2011, 17:29
Дароф

Вот накидал скрипт для оптравки запроса по http...
Код

Option Compare Database

Sub SleepVB(Seconds)
       ' îæèäàíèå Seconds ñåêóíä
       Dim Start
       Start = Timer ' òåêóùåå âðåìÿ â ñåêóíäàõ
       Do While Timer < Start + Seconds
       ' îáåñïå÷èâàåò ïàðàëëåëüíîå âûïîëíåíèå äðóãèõ ïðîöåññîâ
       DoEvents
       Loop
       End Sub


Private Sub Êíîïêà0_Click()
Dim answer, message, abonent

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = False

'======================Ïàðàìåòðû==================================
UserName = "test"
pass = "test"
alpha_name = "SMS CLUB"
message = EncodeBase64("Вам пришел товар")
'message = EncodeBase64("Vam prishel gruz")
abonent = "380500000000"
'=================================================================

objIE.Navigate "http://smpp.smsclub.mobi/hfw_smpp_addon/httpsendsms.php?username=" + UserName + "&password=" + pass + "&from=" + alpha_name + "&to=" + abonent + "&text=" + message
While objIE.Busy

SleepVB (2)

Wend
answer = objIE.Document.body.innerHTML

a = objIE.Quit()

End Sub





Но в результате этого запроса получаю каракули...

Для корректной работы необходимо в переменную message записать текст в кодировке Win1251 и потом его законвертить в base64...

Но как это правильно сделать? 

Спасибо

Автор: Agentsmith 13.10.2011, 19:24
Это не каракули, а ответ сервера в другой кодировке (вероятно UTF-8).  Полезно было бы узнать чё пишет.

Законвертить надо не в Base64, а в это:
(взято на http://www.xserver.ru/computer/sredaprogr/msvb/32/ )
Код

Function EncodeBase64(s)
Dim Char As Integer, i As Integer
For i = 1 To Len(s$)
     Char = Asc(Mid(s$, i, 1))
     If Char > 96 And Char < 123 Then
         EncodeBase64 = EncodeBase64 + Mid(s$, i, 1)
     ElseIf Char > 64 And Char < 91 Then
         EncodeBase64 = EncodeBase64 + Mid(s$, i, 1)
     ElseIf Char = 32 Then
         EncodeBase64 = EncodeBase64 + "+"
     Else
         EncodeBase64 = EncodeBase64 + "%" + Hex(Asc(Mid(s$, i, 1)))
     End If
 Next i
End Function


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)