CreatoR
Если открыть в HEX-редакторе, то в начале, перед #include-once есть три каких то служебных символа, которые обычные редакторы не видят, но из-за них при компиляции вылетает ошибка.
AZJIO
это в файл затесался неюникодный символ, который позже был открыт "нехорошим редактором". это редактор заменил символ � который обычно появляется в текстах с юникод-кодом не входящим в таблицу на эти самые три байта. отсюда ноги и растут. подробнее читать тут Specials (Unicode block)
Доброго всем времени суток. У меня возникла проблема с скачанным архивом Encoding_UDF.zip. Не удается прочитать файл Encoding.au3, и это делает меня печальным. Скажите, это я делаю что то не так или так и задумано?
Распаковываю раром, пытаюсь открыть файл Encoding.au3 блокнотом получаю сообщение "Отказано в доступе".
Пытаюсь копировать файл получаю сообщение "Не удается скопировать Encoding. Нет доступа. Диск может быть переполнен или защищен от записи, либо файл занят другим приложением.", но любой другой спокойно копируется в туже папку.
Распаковываю в C:\Program Files\AutoIt3\Include, открываю эдитором пример из того де архива, запускаю, получаю ошибку
$hFile=FileOpen(@ScriptDir&'\Encoding.txt',128)$sText=FileRead($hFile)FileClose($hFile)MsgBox(0,'Сообщение',_Encoding_UTF8BOMDecode($sText));Description: Converts UTF-8 (with BOM) string to ANSI encoding;Author: amel27Func_Encoding_UTF8BOMDecode($sString)Local$sRetStr,$iMidleStr,$iMidleStr_Pos,$iMidleStr_ChckLocal$sDecodeStr=BinaryToString('0xC3A0C3A1C3A2C3A3C3A4C3A5C3A6C3A7C3A8C3A9C3AAC3ABC3ACC3ADC3AEC3AFC3B0C3B1C3B2C3B3C3B4C3B5C3B6C3B7C3B8C3B9C3BCC3BBC3BDC3BEC3BF',4)Local$sEncodeStr='абвгдежзийклмнопрстуфхцчшщьыэюя'For$i=1ToStringLen($sString)$iMidleStr=StringMid($sString,$i,1)$iMidleStr_Pos=StringInStr($sDecodeStr,$iMidleStr)If$iMidleStr_PosThen$iMidleStr_Chck=StringMid($sEncodeStr,$iMidleStr_Pos,1)IfStringIsUpper($iMidleStr)Then$iMidleStr_Chck=StringUpper($iMidleStr_Chck); актуально только для изменённого символаElse$iMidleStr_Chck=$iMidleStrEndIf$sRetStr&=$iMidleStr_ChckNextReturn$sRetStrEndFunc;==>_Encoding_UTF8BOMDecode
Поменять и всю UDF сохранить в ANSI.
Это нормально что для символа "ч" нет верхнего регистра?
[v1.5], 24.09.2012
* Кодировка библиотеки изменена обратно на ANSI, изменённая кодировка вызывала проблемы с утилитой проверки синтаксиса.
* _Encoding_HexSymbolsToANSI переименована в _Encoding_QuotedPrintableToANSI. _Encoding_HexSymbolsToANSI по прежнему поддерживается (устарела).
В версии 1.5 функция _Encoding_Base64Encode() добавляет в конец строки какие то очень странные переводы строки которые не удаляются обычным StringStripCR(), поэтому приходится после обработки вычитать из строки последние два символа(вывел экспериментально).
Добавлено:
Сообщение автоматически объединено:
Я разобрался, эти странные переводы строки только на первый взгляд странные, на самом деле они вполне обычные. Интересная особенность в том что функция их вставляет через каждые 64 символа, или если строка короче, то в конец строки.
Лично мне эти символы перевода строки там не нужны, поэтому я модифицировал данную функцию. Последнюю строчку функции я заменил на следующую:
Я не уверен на сколько это правильно с точки зрения стандартов, но для моей задачи эти символы объективно лишние. Стоит отметить, ранее в версии 1.0 этих символов не было, то есть можно предположить что этих символов там все таки не должно быть.