본문 바로가기

파이썬(Python)/인코딩

(5)
인코딩 악의축은 의외로 윈도우 운영체제와 엑셀인듯? python pandas dataframe 을 사용해서 만들면 아무런 문제가 없는데, 중간중간 저장해놓은 csv 나 xlsx 를 엑셀로 열어서 저장하면 생각보다 자주 찐빠가 난다. 윈도우가 기본적으로 ANSI (나라마다 다른데 한국은 cp949)를 쓰는데다, 엑셀도 이걸 기본값으로 설정한다. 심지어 utf-16을 unicode 라고 표기해 두는 일도 잦다. 거기다 utf-8로 된 자료를 바로 읽어오는 기능이 없다. 바로 읽으려면 무조건 utf-8 +BOM 형식으로 저장해야 한다. (메모장은 바로 읽음ㅋㅋㅋ) 웹을 다루어야 하거나, 파이썬을 다루는 사람들은 엑셀의 기본 인코딩을 싸그리 utf-8 로 바꾸는것도 답이다.ㄹㅇ. 그런데 이러면 ANSI 를 못 읽지 않나? 노답.
UnicodeDecodeError 만드는 바이트값 목록 UTF-8 (1~4바이트 가변) 인코딩 바이트 크기와 위치 가능 설명+오류값 판별법 1바이트 가능: \x00 ~ \xFF 전부 가능. \x00 ~ 2바이트 이상에서, 나머지 바이트 가능: \x80 ~\BF 불가능: \x00~\x7F \xC0~\xFF 바이트 값이 반드시 10xx xxxx 이어야 하므로 헥스코드2자리 중 앞자리가 8,9,A,B (1000 ~ 1011) 만 가능하다. 나머지 값인 0~7, C~F 가 들어가면 오류난다. 2바이트의 첫번째 바이트 가능: \xC0~\xDF 불가능: \x00~\xBF \xE0~\xFF 바이트 값이 반드시 110x xxxx 이어야 하므로 헥스코드2자리 중 앞자리가 C,D (1100,1101)만 가능하다. 나머지 값인 0~9, A,B,E,F 가 들어가면 오류난다. 3바..
한국어 인코딩 과정에서 나오는 주요 Unicode Decode Error 목록 내가 이 문제로 골머리를 좀 앓는다. 나 포함 Unicode Decode Error 와 다투는 많은 이들을 위해 도움이 되었으면 좋겠다. 1. 들어가기에 앞서, position number를 이해한다. byte_data = b'\x00\x01\x02\x03\x04 ... \0xFF' 라는 예시를 들겠다. 인코딩 오류를 볼때 아래의 개념을 쓴다. in position 0 == 0번째 위치 == 바이트값 \x00 in position 1 == 1번째 위치 == 바이트값 \x01 in position 2 == 2번째 위치 == 바이트값 \x01 in position 255 == 255번째 위치 == 바이트값 \xFF 실제 텍스트 데이터는 이보다 복잡하게 나올 것이다만. 바이트, 인코딩, 유니코드 사이의 관계 ..
유니코드 그룹 표(Unicode groups table in EN & KR) 실제 문자를 보고 싶으면 Win(田)+S 로 검색창 열고, '문자표' 열어서 보면 가장 깔끔하다. 인코딩 관련 조치에 이어서, 이번엔 utf-8 이 어느어느 영역에 어떤 것을 할당했는지 확인해 보았다. 일부는 번역이 되어 있으나, 전부 다 되어있지는 않아서 직접 다 메웠다. 노가다라 몇시간 걸림ㅋ. https://docs.google.com/spreadsheets/d/1k_O31DPb14fYi3qkQYkbMTRgzPaLGVV5MlkSFRvH000/edit#gid=983189201 utf-8 table EN,KR utf-8 code groups EN,KR 2byte Utf-8 HexValue , Group Name,한국 어 이름 U+0000 ... U+007F, Basic Latin,라틴 U+0080 ....
Unicode Decode Error : 'utf-8' codec can't decode byte 0xed in position 0: invalid continuation byte 문제를, 해결할 수도 있는 한가지 방법 for Non-Koreans, directly go to the bottom. There is an English summary. You may translate this article to read, but I think it would not be very helpful, due to incorrectness of automatic-translation between Korean-English. txt 파일을 with open 으로 불러와 str 로 저장하여, 그 str를 KoNLPy KKMA(꼬꼬마)에 넣고 pos 돌리는데, 일부 텍스트 파일에서만 Decode 에러가 났다. stack overflow 검색으로 이십여 개의 글을 읽어봤으나, 명확한 답은 나오지 않았다. 일단 나는 0xed 바이트 in..