purebasic.info

PureBasic forum
Текущее время: Пт сен 21, 2018 3:30 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Ср апр 23, 2014 5:39 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вс июл 14, 2013 10:04 pm
Сообщений: 30
Откуда: Новосибирск
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
m0t0d0r писал(а):
EM140 писал(а):
m0t0d0r писал(а):
З. Ы. Проблема в том что при включении юникода в настройках purebasic curl возращает не карюгазябы, а вообще ничего не возращает :(((

Не надо включать юникод, работай с анси, как и работал.
UtfToAnsi(String$) берет html текс в юникоде и переводит в анси, но если текст уже в анси, то процедура этого не поймёт и всё равно переведет код в анси и тогда будут пробеммы. Как вариант, смотреть в хидерах, в каком формате html код, приходящий с сервера.


К сожалению, такой вариант сработает только под виндой, но никак не под линупсом :(
Если не включить юникод, то можно сразу попрощаться с не латинскими символами :(((
Пример отключения юникода:


Вложения:
Комментарий к файлу: Пример отключения юникода.
снимок10.png [281.18 KiB]
Скачиваний: 0

_________________
Ms Windows 7 SP1 (x64) | Linux Kubuntu 14.04 (x86) | PureBasic 5.30 (x86)
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Ср апр 23, 2014 6:39 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
Я не думаю, что в линуксе обработка HTTP как то отличается от винды, ну по крайней мере не сильно, не на столько,чтобы это не работало. Я думаю, что у вас проблемма с редактором пурика, у меня тоже в дебагере не видно кирилицу.

Попробуйте записать результат в файл и посмотрите, есть ли там русские буквы

Код:
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
Procedure.s GetURL(url.s)
  curl  = curl_easy_init()
  If curl
    curl_easy_setopt(curl, #CURLOPT_URL, @url)
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
    curl_easy_setopt(curl, #CURLOPT_HEADER, 0)
    curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteStrFunction())
    res = curl_easy_perform(curl)
   
    result_html.s = RW_LibCurl_GetData2()
    result_html.s = UtfToAnsi(result_html.s)
   
    curl_easy_cleanup(curl)
   
    oPf = OpenFile(#PB_Any, "C:\test file.html")
    If oPf<=0 :Debug "bad write file": EndIf
    WriteString(oPf, result_html.s)
    CloseFile(oPf)
   
    ProcedureReturn result_html.s
  Else
    Debug "Warning! cURL no init!"
  EndIf
EndProcedure



Так сказать для очистки совести, чтобы точно знать, что проблемма именно в оси а не в дебагере, отладчике пурика.

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 2:14 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
m0t0d0r писал(а):
.....Я думаю, что у вас проблемма с редактором пурика.....

Тут дело не в редакторе, а в самом пурике. У меня нет под рукой пурика, объясню на пальцах, все текстовые данные, передаваемые в не пуриковские функции(будь то системные GTK или сторонние cUrl), пурик передаёт в корявой кодировке(может он два нуля в конце строки передаёт или ещё что, я не знаю), но чтоб работали сторонние функции при компиляции в UTF, нужно их конвертировать в Asci. EM140 здесь ответ на твой вопрос.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 8:09 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
lakomet писал(а):
пурик передаёт в корявой кодировке
Скажи это разработчикам юникода что их кодировка корявая. :D
Дело не в пурике или либе, а в коде. :?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 9:00 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вс июл 14, 2013 10:04 pm
Сообщений: 30
Откуда: Новосибирск
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
lakomet писал(а):
m0t0d0r писал(а):
.....Я думаю, что у вас проблемма с редактором пурика.....

Тут дело не в редакторе, а в самом пурике. У меня нет под рукой пурика, объясню на пальцах, все текстовые данные, передаваемые в не пуриковские функции(будь то системные GTK или сторонние cUrl), пурик передаёт в корявой кодировке(может он два нуля в конце строки передаёт или ещё что, я не знаю), но чтоб работали сторонние функции при компиляции в UTF, нужно их конвертировать в Asci. EM140 здесь ответ на твой вопрос.


Итак, в итоге, получился такой фрагмент кода:

Код:
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
 
Procedure to_utf8(txt.s)
  mem=AllocateMemory(Len(txt)*6)
  PokeS(mem,txt,-1,#PB_UTF8)
  ProcedureReturn mem
EndProcedure
 
Procedure.s RW_LibCurl_GetData2()
  Shared ReceivedData.s
  Protected ReturnData.s
 
  ReturnData.s = ReceivedData.s
  ReceivedData.s = ""
 
  ProcedureReturn ReturnData.s
EndProcedure
 
Procedure.s GetURL(url.s)
  val=to_utf8(url.s)
 
  curl  = curl_easy_init()
  If curl
    curl_easy_setopt(curl, #CURLOPT_URL, val)
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
    curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
    curl_easy_setopt(curl, #CURLOPT_HEADER, 0)
    curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteStrFunction())
    res = curl_easy_perform(curl)
 
    result_html.s=RW_LibCurl_GetData2()
 
    curl_easy_cleanup(curl)
   
    ProcedureReturn result_html.s
  Else
    Debug "Warning! cURL no init!"
  EndIf
EndProcedure



Если содержимое результата процедуры GetURL() записывать в файл, то всё ок (уже при выбранной галочке вкл. юникода в purebasic, чего и добивались)

Код:
1
2
3
4
5
6
7
8
9
 
test.s=GetURL(url.s)
 
Debug test
 
If CreateFile(0, "Sample_1_VK.txt")
  WriteString(0, test, #PB_Unicode)
  CloseFile(0)
EndIf



А вот дебагер показывает только пустые символы...

А как можно их расшифровать, чтобы в переменной текст принял тот же вид, что и в сохраненном файле?

_________________
Ms Windows 7 SP1 (x64) | Linux Kubuntu 14.04 (x86) | PureBasic 5.30 (x86)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 9:04 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Попробуй выводить не в Debug, а в MessageRequester().

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 9:17 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Вс июл 14, 2013 10:04 pm
Сообщений: 30
Откуда: Новосибирск
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Попробуй выводить не в Debug, а в MessageRequester().


Попробывал, результат весьма любопытный: выложил скрины всего добра:

Вложение:
вкл. юникод.png [265.25 KiB]
Скачиваний: 0


Вложение:
отк. юникод.png [319.05 KiB]
Скачиваний: 0

_________________
Ms Windows 7 SP1 (x64) | Linux Kubuntu 14.04 (x86) | PureBasic 5.30 (x86)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 9:36 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Там указанно что кодировка UTF-8, а значит при включенной поддержке юникода, нужно перекодировать текст из UTF-8 в юникод.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 10:06 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Пётр писал(а):
Дело не в пурике или либе, а в коде.

Не соглашусь, дело в том что пурик передаёт текст в сторонние функции, в кодировке толи utf16 толи ещё в какой, а нужно именно в utf8. Если сможешь объяснить другое, готов выслушать.

_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 10:24 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
EM140 писал(а):
А как нечто подобное можно реализовать под linux?

Заранее спасибо ^_^


Перепиши всё на сокеты средствами пурика. Быстрее получится, чем курл пелить, а учитывая, что работать только с ВК, то в принцыпе, не так уж и сложно. И огромный плюс к знанию HTTP запросов, что не может не радовать.

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 10:35 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
lakomet писал(а):
Не соглашусь, дело в том что пурик передаёт текст в сторонние функции, в кодировке толи utf16 толи ещё в какой
Зависит от того включена поддержка юникода или нет.
Псевдотипы вроде пока не отменяли.

lakomet писал(а):
а нужно именно в utf8
Curl принимает от проги все текстовые строки в UTF-8? Где такое написано?

lakomet писал(а):
Если сможешь объяснить другое, готов выслушать.
Нужен конкретный пример, а пока такового нет.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Работа с vk.api: get запрос в linux
СообщениеДобавлено: Чт апр 24, 2014 11:28 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Пётр писал(а):
Нужен конкретный пример, а пока такового нет.

Петь, ты как всегда в своём репертуаре. Какой пример? Бери любую функцию GTK, которая принимает в качестве параметра строку, вот тебе и пример. Исходник в utf8-это важно, ставишь галку компилить в юникоде, и получаешь ошибку. Потом берёшь тот же исходник, но строку передаёшь преобразовав(функция выше в этой ветке) в utf8 и ошибка исчезает. Да как выход, можно и через прототипы, но это не отменяет моего утверждения, что пурик из исходника в utf8, передаёт строку в другой кодировке. Поэтому в лине все строки, передаваемые в сторонние функции, нужно предварительно конвертировать в utf8.

_________________
.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB