Python을 사용하다 보면, 소스코드에서 썼던 한글이 깨질 경우가 있다. 이러한 원인은 소스코드 자체는 utf-8로 저장되어 있는데, 실행하는 콘솔이 euc-kr로 실행하거나 혹은 그 반대일 경우이다. 이럴때 명확하게 소스코드 파일 자체가 특정 인코딩으로 저장되었다고 선언을 해주어야 한다. 소스코드 최상단에 다음과 같이 입력하면 된다. #-*- coding: utf-8 -*- euc-kr의 경우 utf-8 대신에 euc-kr을 설정해주면 된다.
PHP로 json_encode하여서 클라이언트에서 응답을 받았는데, android studio 화면상에 보이는 문자와 실제의 문자열의 길이가 달랐다. 그리고 JSONObject의 parse가 자꾸 실패를 하게 되었다. 이렇게 되는 원인을 찾았는데 PHP 소스파일의 인코딩이 UTF-8 with BOM으로 되어 있었다. 이것을 UTF-8로 변경해주면 문제 없이 동작한다. 최근에 atom, vscode등 여러가지 에디터를 변경하면서 생긴 문제이다. 항상 기존의 코드와인코딩이 맞는지를 항상 확인하자.
Visual C++에서는 wchar_t로 유니코드를 사용한다. 그런데 유닉스나 모바일 호환성을 위해서 Win32 API가 아닌 iconv로 인코딩을 변환하다보면 에러가 발생한다. 그럴때는 다음과 같이 tocode에 "UTF-8" 대신에 "WCHAR_T"를 입력하면 된다. char str[] = "두덕리온라인"; TCHAR str2[4096]; iconv_convert("WCHAR_T", "EUC-KR", str, (char*)str2, 4096 * 2); 현재 사용하고있는 iconv 래퍼 함수이다. int iconv_convert(const char* tocode, const char* fromcode, const char* instr, char* outbuf, size_t outlen) { iconv_..
안드로이드에서 TXT파일을 처리하다보면 EUC-KR 파일을 처리할때가 있다. 그럴때는 다음과 같이 UniversalDetector를 쓰면 되는데 gradle에 먼저 다음과 같이 추가해 주어야 한다. //encoding compile 'com.googlecode.juniversalchardet:juniversalchardet:1.0.3' 그리고 다음과 같이 프로그래밍 하면 텍스트 파일 내용을 UTF-8 자바 문자열로 얻을 수 있다.File file = new File(path);FileInputStream is = new FileInputStream(file); UniversalDetector detector = new UniversalDetector(null);byte[] buffer = new byte..
- Total
- Today
- Yesterday