개발/python
pyqt로 file open, file save 할 때 인코딩 주의점
북치기_개발모드
2022. 12. 9. 00:40
반응형
우린 보통 파일 오픈할 때만 인코딩을 신경쓰게된다.
하지만 저장을 할 때에도 인코딩을 맞춰줘야 에러가 발생하지않는다.
왜냐하면 pyqt에서 제공하는 textedit 을 저장하면, 기본으로 ANSI로 저장되게 되는데, 이는 CP949로만 인코딩이 가능하다.
그냥 아무 옵션주지않고 할거라면 CP949로만 호출하면 되는데,
만약 UTF-8로 옵션을 줄거라면 저장할 때에도 UTF-8 옵션을 줘야한다.
PYQT 내에서 저장한 파일 외 +@로 다른 파일을 불러올 계획이 있다면 꼭 UTF-8로 통일시켜야한다.
예를들어 메모장은 기본 인코딩이 UTF-8이기 때문에 바로 에러가 발생한다.
참고코드
def filesave(self):
# 텍스트창에 써져있는 내용들을 저장함. txt한정으로 저장
FileSave = QFileDialog.getSaveFileName(self, 'Save file', './',"*.txt")
TextBox = self.TextBox_ASS.toPlainText()
#파일 선택 창 취소 시 다음작업이 실패되서 에러가 뜸. 따라서 try 넣는다.
try:
f = open(FileSave[0], 'w', encoding='utf-8')
f.write(TextBox)
f.close()
except:
pass
def fileopen(self):
self.TextBox.clear()
try :
file_name = QFileDialog.getOpenFileName(self, 'File Open', './',"*.txt")
File = open(file_name[0], "r", encoding='utf-8')
lines = File.readlines()
File.close()
# print(lines)
반응형