개발/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)
반응형