갓똥
나는야 프로그래머
갓똥
전체 방문자
오늘
어제
  • 분류 전체보기 (186)
    • 프로그래밍 (146)
      • 자바 (9)
      • 안드로이드 (2)
      • 유니티 (20)
      • C++ (38)
      • C# (56)
      • HTML (2)
      • 파이썬 (3)
      • 자료구조 (2)
      • 알고리즘 (0)
      • 문제풀이 (4)
      • 디자인 패턴 (7)
      • 카카오톡 봇 (1)
      • 엑셀 (1)
      • 기타 (1)
    • 게임 (21)
      • 테일즈위버 (0)
      • 카이로소프트 (1)
      • 순위 (19)
      • 기타 (1)
    • 일상 (13)
      • 카페 (1)
      • 방탈출 (12)
    • 기타 (6)
      • 웃긴자료 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • c# unboxing
  • 유니티 골드그래프
  • c# coroutine
  • C++
  • pc 게임 순위
  • 2020년 게임 매출
  • 글로벌게임매출
  • C# 예외 처리
  • 전세계게임매출순위
  • c# delegate
  • 알고리즘
  • 유니티 그래프 그리기
  • C# boxing
  • 게임 매출 순위
  • pc게임 순위
  • c# collection
  • 강남 방탈출
  • 롤 골드그래프
  • c# Thread
  • C++ 상속
  • c# 코루틴
  • C++ virtual
  • C++ 소멸자
  • 모바일 게임 순위
  • 게임 디자인 패턴
  • 전세계 게임 매출
  • 자바
  • 유니티 그래프
  • 게임매출순위
  • Unity Graph

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갓똥

나는야 프로그래머

[파이썬] ANSI / UNICODE / UTF-8  파이썬 한글 출력
프로그래밍/파이썬

[파이썬] ANSI / UNICODE / UTF-8 파이썬 한글 출력

2019. 9. 27. 16:45
728x90
반응형

슬랙으로 하루에 한 문장씩 명언이나 대사를 출력하는걸 만들어봤다.

데이터는 (문장)/(화자) 세트로 하루에 하나씩 순서대로 출력하게 해놨다.

 

정말 간단하게 Split을 이용해서 문장과 화자를 나누고 (문장)+"\n- "+(화자) 하면 될 줄 알았는데 다른 문제가 생겼다.

 

데이터는 대충 .txt파일로 저장해놓고 쓰려고 했는데

구글 클라우드 컴퓨터로 가상 머신으로 돌렸는데 ANSI로 지정하니 기존 로컬로 테스트 해볼 때는 발생하지 않던 한글은 저장이 되지 않는 문제가 발생했다. 

 

찾아보니 메모장에서는 인코딩을 지정안하고 default로 지정되어 있는 ANSI로 놓으면 ANSI로 저장되는게 아닌 시스템 로컬을 따라가고 한글 Window에서는 CP949로 저장된다고 한다.

그래서 로컬에서 테스트 해볼 때는 (CP949) 정상동작 했지만 가상 머신은 영문판 Window라 한글이 지원이 되질 않았다.

그 결과...

그래서 메모장 저장을 UTF-8로 하고 

file = open('data.txt', 'r', 'utf8') 로 불러왔는데 

더 이상하게 변해버렸다. utf-8로 저장한걸 또 utf-8로 불러오려해서 그런가? 하고 인코딩을 지정하는 부분을 빼봐도 똑같다.

 

더 찾다보니

utf8 or utf-8로 불러오는게 아닌 ISO-8859-1로 불러오면 해결 된다는 글을 보았다.

file = open('data.txt', 'r', 'ISO-8859-1')

로 했는데 왜인지 Fail...


도대체 무엇이 문제인가.

 

사실 인코딩 문제는 로컬에선 아무문제가 없었고 한글처리에 대한걸 깊게 생각해본적이 없어서 막막했다.

구글신께 도움을 빌어본결과 다른 해결책을 찾았다.

 

파이썬 자체에 codec이란 모듈을 지원하고 codec이란 메소드를 통해 파일을 읽으면 된다는 내용이였다.

내용을 수정해서

file = codecs.open('data.txt', 'r', encoding='utf8')

그 결과

굳

아주 잘 나온다.

 

파이썬 기본 모듈인지 pip를 통해 따로 설치할 필요도 없었다.

 

혹시 utf-8로 읽어온 내용을 다른 인코딩으로 print할 일이 있다면 encode 메소드를 사용하면 된다고 한다.

ex) print text.encode('cp949')

 

 

끄읏-

 

 

http://word.snu.ac.kr/wiki/doku.php?id=python:cookbook:%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%84_%EC%A7%80%EC%A0%95%ED%95%B4_%ED%8C%8C%EC%9D%BC_%EC%9D%BD%EA%B3%A0_%EC%93%B0%EA%B8%B0

 

728x90
반응형

'프로그래밍 > 파이썬' 카테고리의 다른 글

[Python] virtualenv  (0) 2020.04.17
[파이썬] 슬랙 썸네일이미지 (Slack Thumb_url)  (3) 2019.09.26
    '프로그래밍/파이썬' 카테고리의 다른 글
    • [Python] virtualenv
    • [파이썬] 슬랙 썸네일이미지 (Slack Thumb_url)
    갓똥
    갓똥
    공부하며 알아가는 내용을 정리해 봅니다.

    티스토리툴바