1 (изменено: TD-Addict, 2012-11-19 02:50:54)

Тема: AHK: IfInString не видит русский язык

Имеется скрипт, он считывает текст с лога, проверяет есть ли в логе нужные куски, и действует соответственно. Лог в формате .txt
Всё работает, на английские фразы и на знаки препинания реагирует как нужно.
Проблема: Русского языка он в упор не замечает, как быть?

sleep, 200
    IfInString, last_line, Карамба
indicate :=1
    IfInString, last_line, Укушу
goto reel
    IfInString, last_line, !

2

Re: AHK: IfInString не видит русский язык

Видимо проблема с кодировкой.

3

Re: AHK: IfInString не видит русский язык

Напишите, какой версией программы Вы пользуетесь, версию ОС, в каком формате сохраняете файл скрипта.

4

Re: AHK: IfInString не видит русский язык

ОС: Windows 7
Версия хоткея: 1.0.48.5
Формат файла: .ahk

5

Re: AHK: IfInString не видит русский язык

TD-Addict
Текст в логе в какой кодировке? Для этой версии AHK нужно Windows-1251. Попробуйте этот текст через MsgBox вывести — нормально отобразит или нет.

6

Re: AHK: IfInString не видит русский язык

MsgBox, 4,, Отобразилось! (press Yes or No)
IfMsgBox Yes
    MsgBox You pressed Yes.
else
    MsgBox You pressed No.

текст отображает как надо.
Кодировка, видимо, UTF-8

7

Re: AHK: IfInString не видит русский язык

Есть ли версия АХК, которая сможет работать с UTF-8?
Потому как повлиять на кодировку лога я не могу..

8

Re: AHK: IfInString не видит русский язык

Э-э-э... что-то я не понял. Вы просто вывели слово "отобразилось"? Я имел в виду прочитать средствами АНК текст из лога (с русскими буквами) в переменную и вывести её в MsgBox. Если кодировка UTF-8, то нужен AutoHotkey_L. Ну, собственно, он вроде бы и скачивается, если на официальном сайте нажать кнопку Download. Там есть возможность читать файлы в разных кодировках.

9

Re: AHK: IfInString не видит русский язык

Ну, это и есть кусок текста из лога (:
Сейчас попробую, спасибо!

10

Re: AHK: IfInString не видит русский язык

Поставил новый АХК, пробовал компилировать скрипты, запускать от администратора (бесполезно, но на всякий случай), всё равно русский язык для него просто пустое место.

11

Re: AHK: IfInString не видит русский язык

Выложите Ваш скрипт и пример лога в виде файлов на какую нибудь файлопомойку.

12

Re: AHK: IfInString не видит русский язык

TD-Addict пишет:

Поставил новый АХК, пробовал компилировать скрипты, запускать от администратора (бесполезно, но на всякий случай), всё равно русский язык для него просто пустое место.

А кодировку-то в команде чтения файла указали? Я имел в виду, что в новом есть эта возможность. Также там можно кодировку по умолчанию задать, чтобы в каждой команде не указывать.

13

Re: AHK: IfInString не видит русский язык

http://files.mail.ru/LAN8BR
Сам скрипт:

IfWinNotActive, RIFT, , WinActivate, RIFT,
WinWaitActive, RIFT,

Logfile = C:\Users\Schmule\Documents\RIFT\log.txt ;Customize to personal Rift noncombat log file location.

fish :=0

top:
FileDelete, %logfile%
last_line :=0
sleep, 500
Send, -
sleep, 400
MouseClick, left,  876,  373 ;Customize mouse coordinate for pole click location.
Sleep, 200

If fish = 1
     goto bait

go:
Timer := A_TickCount
Go-Loop:
{
Loop, read, %logfile%
    last_line := A_LoopReadLine
{
sleep, 200
    IfInString, last_line, свойства усилителя больше
fish :=1
    IfInString, last_line, Тащите рыбу!
goto reel
    IfInString, last_line, Рыба сорвалась.
goto top
    IfInString, last_line, Рыбалка прекращена
goto top
    IfInString, last_line, в ваших руках
goto top
    If A_TickCount - Timer < 30000
                 Goto, Go-Loop
Goto, top
}
}

reel:
Loop
{
FileDelete, %logfile%
last_line :=0
sleep, 200
Send, -
goto go
}

bait:
Loop
{
fish :=0
sleep, 200
Send, 0
sleep, 200
MouseClick, left,  1601,  883 ;Customize mouse coordinate for pole click location.
sleep, 4000
Reload
}

^+1::Goto, bait
^+2::Pause
^+3::Reload
Escape::ExitApp

14 (изменено: Someone, 2012-11-19 19:39:12)

Re: AHK: IfInString не видит русский язык

В скрипт добавьте

FileEncoding, UTF-8

и сохраните сам скрипт с кодировкой UTF-8 with signature (BOM).

Вот такой тестовый скрипт работает с Вашим логом:

FileEncoding, UTF-8

Logfile = log.txt

Loop, read, %logfile%
{
    last_line := A_LoopReadLine
    MsgBox % last_line

    IfInString, last_line, Тащите рыбу!
        MsgBox Bingo!
}

15

Re: AHK: IfInString не видит русский язык

Someone пишет:

и сохраните сам скрипт с кодировкой UTF-8 with signature (BOM).

Это лишнее.

1.1.08.00 - July 14, 2012
Breaking changes:

Changed the default script codepage to ANSI, as the previous behaviour was a common source of confusion.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: Someone, 2012-11-19 20:55:38)

Re: AHK: IfInString не видит русский язык

teadrinker пишет:
Someone пишет:

и сохраните сам скрипт с кодировкой UTF-8 with signature (BOM).

Это лишнее.

1.1.08.00 - July 14, 2012
Breaking changes:

Changed the default script codepage to ANSI, as the previous behaviour was a common source of confusion.

Я проверял, если сохранить скрипт просто в UTF-8 (без BOM) то условие

IfInString, last_line, Тащите рыбу!

не выполняется.

P.S. Если скрипт в сохранен в кодировке ANSI, то выполняется

17

Re: AHK: IfInString не видит русский язык

Someone пишет:

если сохранить скрипт просто в UTF-8 (без BOM)

Без BOM уж точно не надо!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: IfInString не видит русский язык

Someone пишет:

В скрипт добавьте

FileEncoding, UTF-8

Добавил и всё заработало, большое спасибо всем учавствовавшим, вопрос закрыт