- Сообщения
- 8,671
- Репутация
- 2,481
У меня на виртуальной системе (Win 7 x64 Rus), название группы в ListView отображается вопросами (?????), а пункты (в той же кодировке - UTF-8), отображаются нормально.
Вот скрипт:
На моей же системе, точно такой же только x86, название группы отображается нормально.
Я начал проверять в чём дело, и выяснил, что на виртуальной машине, данную проблему можно исправить если в функции _GUICtrlListView_InsertGroup добавить 65001 в качестве второго параметра у вызова _WinAPI_MultiByteToWideChar. Но тогда на моей системе данный трюк как раз искажает название группы (там отображаются символьные вопросы).
Возможно нужно как то определять кодовую страницу системы (второй параметр в вышеупомянутой функции за это и отвечает), чтобы исправить данную проблему на обеих системах?
Мне кажется это баг в функции _GUICtrlListView_InsertGroup, там при получении структуры данных не учитывается юникод...
Вот скрипт:
Код:
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
$hGUI = GUICreate('Test Script', 300, 300)
$iLV = GUICtrlCreateListView('Col', 20, 20, 260, 260)
;Эти строчки читаются из файла в кодировке UTF-8 with signature
$sGroup = 'Группа'
$sItem = 'Пункт'
_GUICtrlListView_EnableGroupView($iLV)
$iIndex = _GUICtrlListView_AddItem($iLV, $sItem)
_GUICtrlListView_InsertGroup($iLV, -1, 1, $sGroup)
_GUICtrlListView_SetItemGroupID($iLV, $iIndex, 1)
GUISetState(@SW_SHOW, $hGUI)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
На моей же системе, точно такой же только x86, название группы отображается нормально.
Я начал проверять в чём дело, и выяснил, что на виртуальной машине, данную проблему можно исправить если в функции _GUICtrlListView_InsertGroup добавить 65001 в качестве второго параметра у вызова _WinAPI_MultiByteToWideChar. Но тогда на моей системе данный трюк как раз искажает название группы (там отображаются символьные вопросы).
Возможно нужно как то определять кодовую страницу системы (второй параметр в вышеупомянутой функции за это и отвечает), чтобы исправить данную проблему на обеих системах?
Мне кажется это баг в функции _GUICtrlListView_InsertGroup, там при получении структуры данных не учитывается юникод...