개발개발/기타

Python euc-kr 인코딩 변환 및 길이 계산하기

iolate 2016. 4. 3. 21:39

SMS API 를 연동하면서, 보낼 문자의 길이를 EUC-KR 인코딩에 맞게 카운트할 필요가 있었다.


단순히 EUC-KR 로 인코딩해서 카운트len(string.encode('euc-kr'))해도 되긴 하지만, "뷁" 같이 EUC-KR 테이블에 없는 문자는 ? 로 치환 후 계산이 필요했음.


즉, 내가 원하는건

1. EUC-KR 에 없는 문자는 ?로 치환하고

2. EUC-KR 인코딩에 맞게 글자수 카운트

를 Python 2.7 에서!


PHP 코드 및 원리는 http://dev.epiloum.net/293 여기에 나와있으며, CP949 / EUC-KR 차이 등에 대해 상세히 잘 설명되어 있다.



길이 자체는 위에 말한듯이 euc-kr 로 인코딩 후 카운트하면 되니 상관없고, 지원하지 않는 문자열을 ?로 만드는 과정이 필요.

utf-8 로 인코딩된 문자열이 입력으로 들어오는 기준으로 작성되었다.


대충 만든거니 대충보고 쓰자...


FUNC: convert_euc_kr

INPUT: content (utf-8)




기반 코드들을 Python 3 으로 마이그레이션함에 따라, 이 코드도 수정이 필요하였다.

에러가 나지 않게 타입(str, byte)부분만 바꿔줘서 제대로 작동이 되는지는 확인해보지 않았다.




리턴값은 여전히 utf-8 로 인코딩 되어 있으니, 길이를 구할때는 len(ncontent.encode('euc-kr')) 로 하면 됨.


끝.