2013-12-12 6 views
0

wx.stc.StyledTextCtrl 텍스트 편집기가있는 wxPython GUI가 있습니다. 내용에 그리스 문자와 같은 유니 코드 문자가 포함될 수 있습니다. 콘텐츠에 유니 코드 문자가없는 경우에만 StyledTextCtrl.SaveFile() 메서드가 작동하는 것으로 나타났습니다. 그렇지 않으면 저장된 파일이 빈 파일이됩니다.유니 코드 콘텐츠로 w.stc.StyledTextCtrl.SaveFile을 호출 할 때의 문제

StyledTextCtrl.SetCodePage (stc.STC_CP_UTF8)를 호출 해 보았지만 도움이되지 않았습니다. 그래서 StyledTextCtrl 코드에 버그가 있는지, 또는 뭔가 빠졌는지 확실하지 않습니다. 어떤 도움을 주셔서 감사합니다.

+0

버그가있을 가능성이 큽니다. 나는 이것을 테스트하지 않았다. 나는 텍스트를 얻고 그것을 스스로 저장했다.하지만 'StartStyling'과 같은 텍스트에서 위치를 필요로하는 메소드에 문제가있다. 문자 대신에 바이트를 센다. UTF-8 텍스트로 엉망이 된 것을 상상해보십시오. – Fenikso

답변

0

코드 저장시 wxConvCurrent이 사용되므로 현재 로캘의 인코딩이 아닌 경우에도 UTF-8이 사용되는 것을 확인하기 위해 wxConvUTF8으로 설정할 수 있습니다 (Windows에서는 절대로 해당하지 않음).

불행히도 wxConvCurrent을 Python에서 변경할 수 있는지 확실하지 않습니다. 그렇게 할 수 없다면 가장 간단한 해결책은 SaveFile() 방법 대신에 wxStyledTextCtrl::GetValue()을 직접 파일에 쓰는 것입니다. 이 경우 성공적으로 저장 한 후 SetSavePoint()에 전화하는 것을 잊지 마십시오.

+0

도움이되는 답변 주셔서 감사합니다. 내 자신의 Save/Load 메서드를 작성하고 두 호출이 모두 끝나면 SetSavePoint()를 호출하기로 결정했습니다. – shahins