2013-12-12 2 views
0

У меня есть wxPython GUI с текстовым редактором wx.stc.StyledTextCtrl. Возможно, что его содержимое содержит некоторые символы юникода, такие как греческие буквы. Я заметил, что метод StyledTextCtrl.SaveFile() работает только тогда, когда у содержимого нет символов Юникода. В противном случае сохраненный файл окажется пустым.Проблема с вызовом w.stc.StyledTextCtrl.SaveFile с содержимым unicode

Я попытался вызвать StyledTextCtrl.SetCodePage (stc.STC_CP_UTF8), но это тоже не помогло. Итак, я не совсем уверен, есть ли ошибка в коде StyledTextCtrl, или что я чего-то не хватает. Любая помощь приветствуется.

+0

Очень возможно, что есть ошибка. Я не тестировал этот (я бы просто получил текст и сохранил его сам), но у меня возникли проблемы с методами, требующими положения в тексте, например 'StartStyling'. Он подсчитывает байты вместо символов. Представьте себе беспорядок с текстом UTF-8. – Fenikso

ответ

0

Сохранение кода использует wxConvCurrent, поэтому вы можете попробовать установить его на wxConvUTF8, чтобы гарантировать, что UTF-8 используется, даже если это не кодировка текущего языка (что никогда не бывает в Windows).

К сожалению, я не уверен, можете ли вы изменить wxConvCurrent с Python. Если вы не можете, самым простым решением, вероятно, было бы просто написать wxStyledTextCtrl::GetValue() в файл самостоятельно, вместо того чтобы полагаться на его метод SaveFile(). Не забудьте позвонить в SetSavePoint() после успешного сохранения, если вы это сделаете.

+0

Спасибо за полезный ответ. Я решил написать свои собственные методы «Сохранить/Загрузить» и вызвать SetSavePoint() после того, как оба этих вызова заставили все работать в конце. – shahins

Смежные вопросы