Что нового

Как узнать кодировку текста в переменной?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Я получаю текстовую переменную с помощью следующей функции:

Код:
Func CopyKey()
	local $WinText = WinGetText("ГАРАНТ ")
	local $a = StringSplit($WinText, @LF, 1)
	local $line
	For $i = UBound($a) - 1 to 0 Step -1
		if $a[$i] = 'Поиск по ситуации' Then 
			ClipPut($line)
			Say ("Скопировано:" & @CRLF & $line)
			Return
		EndIf	
		$line = $a[$i]
	Next
EndFunc


Т.е. считывается текст с экрана с помощью WinGetText, потом оттуда достается нужная строка и помещается в буфер обмена.

Если я вставляю (CTRL+v) текст из буфера в блокнот (akelpad), то строка выглядит нормально. Но если я вставляю в другую программу, то текст получается козябрами.

Можно ли как-то узнать, в какой кодировке находится текст в переменной $line ?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Suppir
Поиск в строке лучше заменить на регулярное выражение, пример:
Код:
$sText = 'Строка 1' &@CRLF& 'Поиск по ситуации Строка 2' &@CRLF& 'Строка 3'

$sLine = StringRegExpReplace(@CRLF& $sText &@CRLF, '(?s)(?i).*\r\n(.*?Поиск по ситуации.*?)\r\n.*', '\1')
MsgBox(64, 'Внимание', $sLine)



Suppir [?]
Можно ли как-то узнать, в какой кодировке находится текст в переменной $line ?
Можно, Encoding UDF. Или на глаз.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 714
Suppir сказал(а):
...считывается текст с экрана с помощью WinGetText... Можно ли как-то узнать, в какой кодировке находится текст в переменной $line?
Поскольку последнии версии AutoIt работают только c Unicode, то ответ такой: в переменной $line текст находится в кодировке Unicode (LE).

:smile:

Вопрос некорректный. Тебя интересует, как вставить текст в редактор в определенной кодировке.

Suppir сказал(а):
Но если я вставляю в другую программу, то текст получается козябрами.
Какую другую?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
`p r o x y
там регулярное выражение не очень подходит, потому что фраза "поиск по ситуации" встречается несколько раз, и после искомого фрагмента текст может быть, а может и не быть. Текст небольшой, поэтому с помощью split тоже без задержки находит.

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