반응형
우린 보통 파일 오픈할 때만 인코딩을 신경쓰게된다.
하지만 저장을 할 때에도 인코딩을 맞춰줘야 에러가 발생하지않는다.
왜냐하면 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)
반응형
'개발 > python' 카테고리의 다른 글
파이썬 출력+로깅 같이하기 (파워쉘 Tee-Object) (0) | 2023.02.09 |
---|---|
멀티프로세싱/멀티스레딩 df 중복 관련 정리 (0) | 2022.12.12 |
[python] PyQt5-tools 설치 에러 -> pyside2로 해결 (0) | 2022.10.09 |
[파이썬] 요일 정렬하기 (무식하게) (0) | 2022.10.08 |
[파이썬] 윈도우 폴더 생성 os.mkdirs 특수문자 제거 정규식 (0) | 2022.10.07 |