Что нового

При некоторых кодировках StringInStr не работает?

ex13

Новичок
Сообщения
1
Репутация
0
Используя POP3.au3 (2.0.1) сохраняю письмо с сервера в файл вида имя.eml,
причем в функции сохранения изменил режим открытия файла с FO_UTF8_FULL на бинарный (иначе получалась каша, после изменения скрипт сохраняет файл ровно так же, как и почтовый клиент):

Код:
$hEML_File = FileOpen($sEML_FileFullPath, $FO_OVERWRITE + $FO_CREATEPATH + $FO_BINARY)
FileWrite($hEML_File, $sEMLContent)


Notepad++ говорит мне, что файл в UTF-8;
если открыть его в почтовом клиенте, то все отлично читается

Затем открываю этот файл как FO_UTF8, FO_UTF8_NOBOM или FO_UTF8_FULL - разницы нет никакой
и начинаю делать первый поиск так:

Код:
$temp = _subst_position_ldv($aStrings[$i], "  Имя файла: ", "")
...
Func _subst_position_ldv($sString, $search_string_left, $delim_right)
$f_pos = StringInStr($sString, $search_string_left, 1, 1, 1)
...


где все отлично находится.
При этом паттрен задан в теле скрипта, который в Notepad++ определяется как UTF-8-BOM

Найденную в первом поиске строку я с помощью Encoding.au3 (1.7) конвертирую в несколько разных кодировок, загоняю в массив, затем содержимое массива поэлементно конвертирую в Base64 и добавляю к исходному массиву.
А затем (будем считать, что от отчаяния) я все содержимое полученного массива конвертирую в UTF-8 и добавляю к предыдущему массиву.

После чего пытаюсь поэлементно искать содержимое последнего массива во все еще открытом файле и не нахожу ничего, несмотря на то, что видуально один из элементов массива в файле присутствует.

Код:
$f_pos = StringInStr($sReadFile, $aPatterns[$j], 1, 1, 1)


Почему оно не отрабатывает?

Общий смысл всех мытарств - выгрузить в отдельный файл аттачи с определенными именами из *.eml
 
Верх