개발개발/기타
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')) 로 하면 됨.
끝.