Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Zets on February 12, 2014, 01:26:38 PM

Title: Как изменить кодировку?
Post by: Zets on February 12, 2014, 01:26:38 PM
Возможно ли в версии 4.7 изменить кодировку?
Скрипт копирует из браузера текст и вставляет в тхт. На одном компе нормально на другом вместо русского знаки вопроса.
В браузере кодировка UTF-8 а в тхт 1251 я так думаю.
Title: Re: Как изменить кодировку?
Post by: Vint on February 12, 2014, 01:38:52 PM
А предварительно сохранить txt в UTF-8 ?
Title: Re: Как изменить кодировку?
Post by: Oraven on February 12, 2014, 01:46:17 PM
Кодировка меняется в самой системе.

Code: [Select]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1253.nls"
"1254"="c_1254.nls"
"1255"="c_1255.nls"
"1256"="c_1256.nls"
"1257"="c_1257.nls"
"1258"="c_1258.nls"
"1361"="c_1361.nls"
Title: Re: Как изменить кодировку?
Post by: Vint on February 12, 2014, 02:40:36 PM
Кодировка меняется в самой системе.
А при чём здесь UTF-8 ? Это же юникод. У него нет кодовых страниц.
Title: Re: Как изменить кодировку?
Post by: Oraven on February 12, 2014, 04:31:04 PM
А при чём здесь UTF-8 ? Это же юникод. У него нет кодовых страниц.
На одном компе нормально на другом вместо русского знаки вопроса.
Частый случай абракадабры из за настроек кодировки.
Title: Re: Как изменить кодировку?
Post by: Крис Тинка on February 12, 2014, 06:33:22 PM
Кодировка меняется в самой системе.

Code: [Select]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1253.nls"
"1254"="c_1254.nls"
"1255"="c_1255.nls"
"1256"="c_1256.nls"
"1257"="c_1257.nls"
"1258"="c_1258.nls"
"1361"="c_1361.nls"
Мне такое не помогло
Title: Re: Как изменить кодировку?
Post by: Zets on February 13, 2014, 11:54:19 AM
Создал в note++ в кодировке 1251 напечатал 1 кириллический символ и сохранил в тхт.  Тепреь норм. Просто 1й символ не удаляю. Криво, но зато решил...
Title: Re: Как изменить кодировку?
Post by: Луций on November 09, 2014, 01:50:19 AM
а мне вот не помогает, и реестр подправил, и файл в ноте++ отредактил кодировку поменял

все равно туклип вставляет иероглифы
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 10, 2014, 09:05:34 PM
я чуть ранее о кодировке отметил:
http://crapware.aidf.org/forum/index.php?topic=1532.0

в общем, рекомендую использовать редактор Bred3, в него вставляешь свой текст в своей кодировке, потом жмешь в нем контрол-А, контрол-Х и записываешь себе куда угодно. Только сначала настрой себе открытие текстовых файлов по умолчанию этим редактором и настой вызов окна этого редактора, я об этом тоже недавно пример приводил.

PS вот моя процедура, можешь её допилить под себя
Code: (clickermann) [Select]
//=============================================
// процедура ввода текстовых данных в поля формы

SUB(InputString, $par, $lang, $x_return, $y_return)

        print("$par=", $par)
        print("$hwnd_bloknot=", $hwnd_bloknot)
        print("$x_return=", $x_return)
        print("$y_return=", $y_return)
   
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
    $code = GETKBLAYOUT($hwnd_bloknot)
        print("$code=", $code)
IF ($lang = "en")
    setkblayout($hwnd_bloknot, 1033)
ELSE
    setkblayout($hwnd_bloknot, 1049)
END_IF
 
    $code = GETKBLAYOUT($hwnd_bloknot)
        print("$code=", $code)

//KEYSTRING($par)
TOCLIP($par)
WAIT(1)
//TOCLIP("0123456789\|/:_+-*ЯяZz")

  KEYDOWN (#CTRL)
        WAITMS (50)
    KEYPRESS (#V)
        WAITMS (50)
    KEYUP (#CTRL)
  WAIT(1)
       
  KEYDOWN (#CTRL)
        WAITMS (50)
    KEYPRESS (#A)
        WAITMS (50)
    KEYPRESS (#X)
        WAITMS (50)
    KEYUP (#CTRL)
  WAIT(3)        
       
  WNDBUMP($hwnd)
    WAIT(1)   
    LCLICK($x_return,$y_return) 
//WAIT(15)
//print("сейчас будет ввод")
//WAIT(4)        
  KEYDOWN (#CTRL)
        WAITMS (50)
    KEYPRESS (#V)
        WAITMS (50)
    KEYUP (#CTRL)
  WAIT(1)
 
END_SUB  // SUB(InputString, $str)

//=============================================

а вот настройка редактора:
(набросал на скорую руку, может не совсем корректно, но работает железно)

Code: (clickermann) [Select]
// запускаем блокнот
$hwnd_bloknot = wndfind("__NotDelete.txt")
print("$hwnd_bloknot=", $hwnd_bloknot)

IF ($hwnd_bloknot = 0)
    execute("__NotDelete.txt")
    $hwnd_bloknot = wndfind("__NotDelete.txt")
        Wait(2)
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
  ELSE
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
WNDPOS ($hwnd_bloknot, 50, 50) 
    WNDSIZE($hwnd_bloknot, 500, 300)
    KEYDOWN(#CTRL)
        waitms(13)
    KEYPRESS(#A)
        waitms(13)
    KEYUP(#CTRL)
        waitms(13)
    KEYPRESS(#DELETE)
        waitms(23)
END_IF

$hwnd_bloknot = wndfind("__NotDelete.txt")
  WNDBUMP($hwnd) // помещает основное окно на передний план
  print("$hwnd_bloknot=", $hwnd_bloknot)
    wait(2)

__NotDelete.txt - пустой текстовый файл / для определённости
Title: Re: Как изменить кодировку?
Post by: Луций on November 11, 2014, 11:26:58 PM
это я и сам могу сделать, вот таким способом все работает:

execute("notepad.exe", STRCONCAT("C:\eliz\lib.txt"))
   WAIT(1)
   a()
   c()
   keydown(#alt)
   waitms(99)
   keypress(#f4)
   keyup(#alt)
   wait(1)
   v()

а я хочу сделать через:

toclip(TFREAD(lib.txt, 1))
v()

как видите второй способ не открывает лишних окон, сразу копирует весь текст написанный в одну строку и вставляет.
это прокатывает с цифрами и английским, а вот вместо русского вставляет что попало, и самое главное - вместо выбора нужной строки одним параметром приходится гонять по строкам с помощью цикла фор
Title: Re: Как изменить кодировку?
Post by: Луций on November 12, 2014, 01:03:05 AM
опытным путем определил, что даже

toclip("Игорь")
v()

вставляет кровозяблы, а например:

toclip("Igor")
v()

работает нормально
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 12, 2014, 06:27:51 AM
)), я же подчеркнул, что не нотепад, а текстовый редактор Bred3 (может и другие есть, не пробовал). У меня с нотепадом кракозябры были, а с Bred3 - нет.
Title: Re: Как изменить кодировку?
Post by: Луций on November 12, 2014, 07:58:09 AM
я сейчас вообще без блокнотов, просто кидаю в буфер кликера из текста скрипта и пытаюсь вставить в браузер - результат все тот же
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 09:22:09 AM
А перед
toclip("Игорь")
v()
переключить кликер на русскую раскладку?
Title: Re: Как изменить кодировку?
Post by: Луций on November 12, 2014, 09:32:32 AM
вот что выходит: Èãîðü

может это у меня с руками проблемы и у кого то получится?

задача - копирование любой строки из файла в буфер, и потом обычная вставка через контрол+вэ, файл прилагаю
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 10:27:20 AM
Ну и всё вставляет как нужно. Что там пробовать, я каждый день пробую.
Ну на всякий случай попробовал
Code: (clickermann) [Select]
SUB(paste)
   KEYDOWN (#CTRL) // Ctrl+V
   WAITMS (50)
   KEYDOWN (#V)
   WAITMS (50)
   KEYUP (#V)
   WAITMS (50)
   KEYUP (#CTRL)
   WAITMS (50)
END_SUB

WAIT(1)
toclip(TFREAD("lib.txt", 1))
paste()
HALT

Результат:
Verdi Eliz- современная детская коляска 2в1
При чём во всех комбинациях раскладок окон.
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 10:31:48 AM
вот что выходит: Èãîðü
Твои кракозябры в кодировке Win 1252 вместо Win 1251
Title: Re: Как изменить кодировку?
Post by: Луций on November 12, 2014, 11:30:12 AM
давайте поможем даше неспавшему сутки мне решить эту упоротую проблему по картинке

(http://cs625722.vk.me/v625722537/8408/NhG97PKrnT0.jpg)
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 02:21:17 PM
По картинке... это сильно. Давай лучше по реестру. Запусти поиск по c_1252.
А файл то в нормальной кодировке. Винда меняет при попадании в буфер.
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 12, 2014, 05:15:49 PM
мучители кракозябр, ещё раз заостряю ваше внимание - редактор Bred3 вам в помощь, через него у меня все проблемы исчезли, а с блокнотом - кракозябры просачивались.
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 05:30:16 PM
У меня проблем нет. И мучений тоже нет.
Оно конечно вариант открывать дополнительный редактор вставлять-копировать-ждать. Выход если нужно вставку произвести 1-2 раза. А если весь скрипт только и делает что работает с буфером? Не проще что-то поправить в консерватории?
С таким же успехом можно отправлять на сервер для исправления кодировки, но это... кхм. даже не знаю как назвать.
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 12, 2014, 07:05:07 PM
я два вечера на кодировку ухлопал, написал3 процедуры для такого же ввода из текстового файла в поле программы, так затыки были (периодические) сначала с раскладкой (сначала переключал штатной командой кликермана), потом сделал процедуру по контрол-альт; потом затык был вообще со вводом текста в поле программы, т.е. то введет, то не введет, видно что экран дернется, что был ввод, а поле пустое, пришлось написать процедуру проверки поля после ввода на наличие точек цвета вводимого текста, если их не было, то вводила вторая процедура, если и тут затык, то третья. Кстати до сих пор не разобрался, почему так происходит - дома так, на работе по-другому. Ну потом появились до кучи кракозяблики. Вот с ними и возился, т.к. проверка ввода срабатывала (что-то было введено). Может, конечно, винда глючит, но мне нужен стопудовый ввод именно моего текста. В итоге, ну наверно, последний раз предложу, все решилось через редактор. Блокнот ерунду пропускал, а Bred3 сработал как мне надо. Он поддерживает больше кодировок. В общем, попробуйте, не поленитесь, думаю, проблема будет решена. Если надо, могу процедуру сбросить, она простая.

А в сухом остатке - проблема с виндой, т.к. на разных компах все затыки по разному бывают. Куда лезть и что там натыкать - это основной вопрос.

//---------------
Вот нашёл - http://strana-sovetov.com/computers/3844-encoding-change.html, внес изменения в реестре, буду тестить
Title: Re: Как изменить кодировку?
Post by: Vint on November 12, 2014, 08:59:27 PM
Зачем какая-то страна советов, если то же самое написано в третьем посте данной темы и ещё продублированно не меньше десятка раз повсему форуму. К тому же без опечаток как там.
Я всегда исходил из того, что реестр в этом месте уже правлен.
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 12, 2014, 09:37:59 PM
по стране советов согласен - надо было сначала проверить.
Только что протестил их советы - региональный язык был в порядке, в реестре поправил (как у них сказано). В итоге - кракозябры не исчезли (пробовал без привлечения блокнота, потом через блокнот, они в него уже кракозябрами вставляются). Потом поставил нотепад, не помог. поставил Bred3 - всё прошло.
http://www.astonshell.ru/freeware/bred3/ - ого официальный сайт.
Не буду спорить, что такой способ бредовый, может винду свою уже замучил до этого состояния, но способ свой нашёл, поэтому и советую. Больше в ветку добавлять ничего не буду.
Кстати, был намёк на то, что подразумевается винда "исправленная", буду благодарен за совет где и что исправить. Протестю с удовольствием. Через редактор действительно гораздо дольше процесс, но для моей винды пока другого лекарства не нашёл.
Title: Re: Как изменить кодировку?
Post by: Луций on November 13, 2014, 01:50:54 AM
в том то и проблема, что скрипт вызывает буфер постоянно и открытие бреда будет делать тысячи раз в час, пытаюсь обойти пока и понимаю что проблемма в моей винде, поменял реестр на 1251 - не помогло
Title: Re: Как изменить кодировку?
Post by: quant13 on November 13, 2014, 02:01:57 AM
Дело не в Виндах. Кликер в буфер обмена отправляет непонятно в какой кодировке.
TFWrite("1lib1.txt",TFREAD("lib.txt", 1))
работает нормально
А через буфер обмена я пробовал из разных кодировок файл считывать(1251,866,65001,850), одинаково ерунда выходит
Title: Re: Как изменить кодировку?
Post by: Vint on November 13, 2014, 09:44:30 AM
Ну как же не в виндах... У меня ведь не спец редакция кликера, та же что и у всех. Но всё работает нормально.

Как раз когда кликер сам читает и сам записывает - всё нормально как в указанном примере. Проблемы начинаются при попадании в буфер. Все манипуляции в буфере - это винда.

Данную правку реестра проводил всегда сразу после установки винды (сколько их не было) ещё со времён Photoshop 4 или 5 (не CS) в лохматом году. Тогда все эти 5-6-7-8  вот так же работали с написанием текста кириллицей и лечились правкой реестра.

Понятно, что кликер тоже виноват, может за чем-то не следит, за чем следить нужно.

Начинать нужно с комплекса мероприятий http://soft.4local.ru/kbase/useful/6458-reshenie-problem-s-kodirovkoy-v-windows-xp-vista-7.html
Title: Re: Как изменить кодировку?
Post by: quant13 on November 13, 2014, 12:36:37 PM
Дело не в виндах, решение проблем с кодировкой нужно когда текст некоторых программ отображается кракозябрами, а тут совсем другое, вполне читабельный текст, с нормальной кодировкой, после попадания в буфер обмена превращается в кракозябры (я же писал, что у меня тоже кракозябры, проверял твой код, Vint, хотя у меня страницы 1250-1252 подменены на 1251 для лучшей совместимости). Может быть это и можно вылечить подменой всех кодовых страниц на одну, но так не правильно, у МелкоМягких тоже не дураки ведь сидят, зачем-то они сделали разные кодовые страницы, не для того чтоб проблемы людям создать ведь.
Пока писал проверил еще одну идею, если загнать в буфер обмена текст вручную (ктрл+с) то вставляет его кликер нормальным в любые места, также нормально работает и этот код
Code: (Clickermann) [Select]
toclip(TFREAD("lib.txt", 1))
wait(1)
logwrite( FROMCLIP() )
halt
в логе все читаемо.
И
Quote
Code: (Clickermann) [Select]
SUB(paste)
   KEYDOWN (#CTRL) // Ctrl+V
   WAITMS (50)
   KEYDOWN (#V)
   WAITMS (50)
   KEYUP (#V)
   WAITMS (50)
   KEYUP (#CTRL)
   WAITMS (50)
END_SUB

WAIT(1)
toclip(TFREAD("lib.txt", 1))
paste()
HALT
при вставке в окно редактора тоже читается нормально, проблема только при вставке в текстовое поле большинства программ, в некоторые вставляется нормально, видимо они написаны в той же кодировке что и кликер.
Значит осталось чтоб автор открыл нам страшную тайну - с какой кодировкой работает кликер сам в себе, а там будем думать что делать.
Информация к размышлению...
Опытным путем удалось выяснить что вставляется текст нормально в поля ввода программ не использующих стандартные поля Окон, т.е. написанные на делфи (может и на других языках тоже, но у меня из кодеров только делфи стоит)
Title: Re: Как изменить кодировку?
Post by: Oraven on November 13, 2014, 01:32:29 PM
Вот что нарыл.

вариант работает в случае применения "штатной" (начиная с Windows Vista) утилиты "clip.exe":

батник
Code: [Select]
chcp 1251>nul
echo Текст | clip

Источник
http://www.cyberforum.ru/cmd-bat/thread1130135.html (http://www.cyberforum.ru/cmd-bat/thread1130135.html)
и вот еще
http://old.computerra.ru/gid/rtfm/system/301629/ (http://old.computerra.ru/gid/rtfm/system/301629/)
Title: Re: Как изменить кодировку?
Post by: Vint on November 13, 2014, 03:28:06 PM
Вот что нарыл.

вариант работает в случае применения "штатной" (начиная с Windows Vista) утилиты "clip.exe":

батник
Code: [Select]
chcp 1251>nul
echo Текст | clip

Это не то. Это изменение кодовой страницы для консоли вместо стандартной там 866.
Title: Re: Как изменить кодировку?
Post by: Vint on November 13, 2014, 03:44:28 PM
Вот что я тут хотел сказать, только не моим дилитантским языком:

В некоторых случаях происходят ошибки при копировании текста через буфер обмена из одной программы в другую - вставка может превращать текст в "кракозябры".

Это может происходить из-за того, что приложение, из которого производится копирование, помещает текст в буфер обмена в 8-битной кодировке, а то, в которое происходит вставка, запрашивает его в Юникоде (так делает, например, Блокнот). Windows "идёт навстречу" и перекодирует текст. При копировании в буфер помещается также информация о языке. Это может делать само приложение, а если не делает, то Windows просто смотрит, на какой язык ввода было переключено приложение в момент копирования. Если на русский, то используется страница 1251 и при вставке всё нормально. Но если текст русский, а окно приложения было переключено в английский, кодирование пойдёт через 1252 страницу и вместо русских букв пойдут "кракозябры". В таких случаях может помочь предварительное переключение приложения, из которого производится копирование, на русский.

Отсюда: http://uahub.info/forum/showthread.php?p=80821

Вариантов 4:
1. Подождать пока Джони добавит при помещении в буфер информацию о языке если это возможно или перейдёт на unicode.

2. Временно вырубить страницу 1252 от не дураков мелко-мягких, тем более, что она нафиг не нужна (мне не нужна, на азербайджанском не пишу  и символы "ö", "ä", "ü" и "ß" в различных приложениях не использую.
Иногда прокатывает только правка реестра. Иногда винда плюёт на настройки реестра, тогда нужно подменить файл c_1252.nls на копию сделанную из c_1251.nls  (папка WINDOWS\system32)
ПЕРЕЗАГРУЗИТЬ систему.

3. Переключать кликер (при запуске или перед командой копирования) на русский язык. Можно через
Code: (clickermann) [Select]
SETKBLAYOUT((WNDFIND("Clickermann - ")), 1049)        // устанавливаем русский для кликермэнаСамо сабой работает на главном окне. Надеюсь вы же не запускаете рабочие скрипты из редактора?

4. Попробовать использовать сторонние программы заменяющие работу с буфером обмена (не уверен поможет ли).

Стоит помнить, что такая проблема возникает у людей не редко и с другими программами. Вариант 1 их не решит всё равно.
Title: Re: Как изменить кодировку?
Post by: Луций on November 15, 2014, 03:48:37 PM
я частично разобрался, в чем проблема, оказалось язык нужно менять одновременно и в кликере и в системе и в браузере

теперь вставка из файла русских букв работает правильно, но при этом не хочет работать вставка строки: "1" "2" "3" - вставляет только цифры, без кавычек, сейчас делаю эту вставку таким криворуким способом:

for($i=1, $i<4)
      keydown(#shift)
      keypress(#2)
      keyup(#shift)
      keystring($i)
      keydown(#shift)
      keypress(#2)
      keyup(#shift)
      keypress(#space)
   end_cyc
Title: Re: Как изменить кодировку?
Post by: ksa-nsk on November 15, 2014, 09:22:36 PM
А нельзя через toclip запомнить вашу кавычку в переменной, а потом значение этой переменной вставлять вместо кавычек?

Title: Re: Как изменить кодировку?
Post by: Vint on November 15, 2014, 10:13:03 PM
В кликере всегда были проблемы с кавычками и другими спецсимволами в строках, как и с пустыми строками в файлах. Без фикса этих проблем очень тяжело. Нужно их править в первую очередь.