Что нового

Encoding UDF - Библиотека для работы с кодировками строк

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Dalm
Вам уже писали в другой теме:
вы бы хоть мало-мальски постарались описать задачу. Уже ведь не новичек на форуме,
... а вы опять на те же грабли... Написали два слова и ждете помощи, а ее не будет. Почему?
Появляются крякозябры типа: Второй текст 1
Читая это у меня возникает больше вопросов чем ответов:
- Что за текст;
- откуда он берется (считан он из файла или сгенерированн скриптом);
- а как вы его считываете;
- почему вы решили его перекодировать;
- причем тут вообще Encoding UDF;
- в какой кодировке сам файл скрипта;
- какая версия Autoit?

Лучше создайте отдельную тему, в которой очень подробно опишите проблему, при возможности приложите тестовый скрипт для демонстрации этой проблемы.
 
Последнее редактирование:

LogA

Новичок
Сообщения
1
Репутация
0
Автор, спасибо за труд!
Решил свою проблему - создавал файл FileOpen с параметрами для UTF8 , читал информацию с сайта (на сайт content="text/html; charset=UTF-8" ) через пользовательские функции "IE Management", получал текст через функции _IE в формате ANSI, писал в файл, получалось каша, формат файла UTF8, а внутри строки в ANSI.
Для исправления стал делать преобразования ANSI->UTF8 , и всё получилось!
Единственно SciTe выдавал предупреждение
"R:\AutoiT\install\Include\Encoding.au3"(194,13) : warning: $a_Call possibly not declared/created yet

Код:
Func _Encoding_Base64Decode($sData)
    Local $struct = DllStructCreate("int")
    
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $sData, _
            "int", 0, _
            "int", 1, _
            "ptr", 0, _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", 0, _
            "ptr", 0)
    
    If @error Or Not $a_Call[0] Then
        Return SetError(1, 0, "") ; error calculating the length of the buffer needed
    EndIf
    
    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")
    
    $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $sData, _
            "int", 0, _
            "int", 1, _
            "ptr", DllStructGetPtr($a), _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", 0, _
            "ptr", 0)
    
    If @error Or Not $a_Call[0] Then
        Return SetError(2, 0, "") ; error decoding
    EndIf
    
    Return BinaryToString(DllStructGetData($a, 1))
EndFunc ;==>_Encoding_Base64Decode

хотя я эту функцию даже не использовал. Работать не мешает, но возможно эта информация пригодиться.
Система на W7 x64
 

Norm

Осваивающий
Сообщения
199
Репутация
36
В библиотеке Encoding.au3
Не задекларирована локальная переменная $a_Call
Допишите впереди Local Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
 
  • Like
Реакции: LogA
Верх