1 (изменено: smisha, 2017-06-23 20:25:51)

Тема: AHk: отображение китайских шрифтов в gui

Всем привет!

Есть программа, графические данные которые я считываю и распознаю с помощью Capture2Text. Она записывает данные в текстовый файл. Данные представляют собой никнеймы как на английском, так и на китайском языке. До текствого файла они доходят в нормальном формате, но как только пытаюсь их вывести на экран, вижу вопросики. Пытался разными способами читать файл используя utf кодировки, но результат тот же. Язык chinese-simplified.

Может быть у кого есть опыт, как сделать чтобы данные нормально выводить с помощью ahk из файла в гуи.

2

Re: AHk: отображение китайских шрифтов в gui

Прикрепите к сообщению образец текста в виде файла.

3 (изменено: teadrinker, 2017-06-23 18:27:42)

Re: AHk: отображение китайских шрифтов в gui

Используйте Unicode-версию интерпретатора, и всё будет нормально отображаться.

Gui, Add, Text,, 世界,你好!
Gui, Show, w100

http://i.imgur.com/MEGk1e3.png

Файл скрипта должен быть сохранён в кодировке UTF-8 с BOM.
Если текст считывается из файла, сохранённого без BOM, в команде FileRead должна быть указана его кодировка.

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

4 (изменено: smisha, 2017-06-23 20:26:12)

Re: AHk: отображение китайских шрифтов в gui

Сейчас попробую поставить unicode версию, так как скрипт teadrinker уже только вопросики показывает).

Главное, чтобы скрипт сохранил работоспособность.

5

Re: AHk: отображение китайских шрифтов в gui

Переставил скрипт на unicode. Использую такой дебаггер:

DebugMessage(tag, str)
{
 global h_stdout, DebugFile, DebugShow, debug

 DebugConsoleInitialize()  ; start console window if not yet started
 if instr(DebugShow, tag) && debug
{
 str .= "`n" ; add line feed
 FileAppend, %str%, debug.txt
 ;FileAppend, %line%`n, debug.txt
 DllCall("WriteFile", "uint", h_Stdout, "uint", &str, "uint", StrLen(str), "uint*", BytesWritten, "uint", NULL) ; write into the console
}
 WinSet, Bottom,, ahk_id %h_stout%  ; keep console on bottom
}

DebugConsoleInitialize()
{
   global h_Stdout     ; Handle for console
   static is_open = 0  ; toogle whether opened before
   if (is_open = 1)     ; yes, so don't open again
     return
	 
   is_open := 1	
   ; two calls to open, no error check (it's debug, so you know what you are doing)
   DllCall("AttachConsole", int, -1, int)
   DllCall("AllocConsole", int)

   dllcall("SetConsoleTitle", "str","Paddy Debug Console")    ; Set the name. Example. Probably could use a_scriptname here 
   h_Stdout := DllCall("GetStdHandle", "int", -11) ; get the handle
   WinSet, Bottom,, ahk_id %h_stout%      ; make sure it's on the bottom

      WinMove, ahk_id %h_stout% , , , , -800, 800
   WinActivate,Lightroom   ; Application specific; I need to make sure this application is running in the foreground. YMMV
  
   return
}

Стал выводить каждый символ через пробел... Как можно исправить?

6

Re: AHk: отображение китайских шрифтов в gui

Не представляю, как этим пользоваться.

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

7 (изменено: smisha, 2017-06-23 20:26:56)

Re: AHk: отображение китайских шрифтов в gui

Выводит в консоль когда запускаешь скрипт сообщения дебаггера, очень удобно для отладки. Там где надо что-то отследить вставляешь.

DebugMessage(tag, str)

Под юникодом китайский заработал!

Всем спасибо. Осталось дебаггер исправить).

8

Re: AHk: отображение китайских шрифтов в gui

smisha, поставьте заглавные буквы и точки в своих сообщениях.
http://forum.script-coding.com/viewtopi … 19#p116819
http://forum.script-coding.com/viewtopi … 22#p116822
http://forum.script-coding.com/viewtopi … 25#p116825