본문 바로가기

UTF-8

(6)
VSCODE 로 visual studio 의 c/cpp 프로젝트 소스코드를 볼 때 인코딩이 깨진다 visual studio 로 만든 C/CPP 프로젝트를 vscode 로 둘러보며 살펴보고 싶은데, 주석의 한글 등이 깨져보였다. 이유는 visual studio 에서는 소스코드의 기본인코딩을 cp949/euckr (또는 각 윈도우의 언어 기본인코딩) 으로 하여 저장되어 있고, visual studio code 는 utf-8 을 기본으로 열기 때문이다. 간단히 하나의 파일만 보려면, vscode 하단 바에 UTF-8 이라는 부분을 한번 클릭하여, Reopen with Encoding 에서 원하는 인코딩을 선택하면 된다. 하지만, 여러 파일을 둘러보는 상황이어서, 특정 프로젝트에 대해서 하나하나 볼 때마다 수작업으로 볼 수는 없었다. vscode 의 전체설정에서 파일인코딩을 cp949 로 바꾸어 버리면, 다..
macOS Xcode 에서 한글입력 특이사항 간단하게 이름과 나이를 입력받아 출력해 주는 C 프로그램이다. 간단히 실행한 내용은 다음과 같다. 이름을 입력하세요. : 홍길녀 나이를 입력하세요. : 18 나의 이름은 홍길녀 이고, 나이는 18 입니다. 이름의 바이트 길이는 24. 이름[00:03] = e1 84 92 = ᄒ 이름[03:06] = e1 85 a9 = ᅩ 이름[06:09] = e1 86 bc = ᆼ 이름[09:12] = e1 84 80 = ᄀ 이름[12:15] = e1 85 b5 = ᅵ 이름[15:18] = e1 86 af = ᆯ 이름[18:21] = e1 84 82 = ᄂ 이름[21:24] = e1 85 a7 = ᅧ 리눅스 등에서 일반적으로 utf-8 의 한글은 한음절이 3바이트로 인코딩되는데, 위 결과를 보면, 자모 하나 당..
인코딩을 들여다보자 아주 오래전에 회사내부에서 공유하려 만들었던 글입니다. 인코딩을 들여다보자 다음과 같은 실험으로 인코딩을 들여다보자. 준비물 : notepad, madedit, python notepad 로 동일한 문자열 여러가지 인코딩으로 저장해 보기 기본 cp949 인코딩 영문은 한 글자당 한바이트가 되고, 한글 한 글자가 두바이트가 되는 cp949 (euc-kr) 인코딩 바이트 스트림이 저장된다. utf-8 인코딩 영문은 여전히 한 글자당 한바이트, 한글은 한 글자가 3바이트가 되어 저장된다. utf 16(le) 인코딩 영문, 한글 상관 없이 모든 글자 하나가 두바이트로 저장된다. utf 16(be) 인코딩 바로 위와 동일하게 영문, 한글 모두 두바이트씩으로 저장되지만, 두바이트의 순서가 le와 반대이다. made..
Visual Studio 에서 utf-8 인코딩된 소스코드 사용하기. 리눅스 플랫폼에서 개발된 c/c++ 소스코드를 컴파일할 일이 생겼다. 한국어 윈도우에서 visual studio 2015 로 프로젝트를 만들어 컴파일하여 돌려보니, 가져온 소스코드의 인코딩이 cp949 가 아닌 utf-8 이어서 메시지가 깨져서 나왔다. 소스 자체의 인코딩을 바꾸어 주는 방법도 있었지만, utf-8 소스를 그대로 유지하고, visual studio 2015 프로젝트 세팅을 변경하여 사용하고 싶었다. 찾아보니 그런 방법이 있었다. https://docs.microsoft.com/ko-kr/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-140 /utf-8(소스 및 실행 파일 문자 집합을..
pip install 중에 , setup.py 에서 UnicodeDecodeError 'cp949' codec can't decode .... illegal multibyte sequence 가 발생하며 설치가 실패한다. pip install 중에 ,setup.py 에서 UnicodeDecodeError 'cp949' codec can't decode .... illegal multibyte sequence 가 발생하며 설치가 실패한다. 파이썬에 처음 입문하고, 이런 저런 패키지(라이브러리)들을 설치해야 한다. 그런데, 간단히 성공해야 마땅한, 패키지 설치 중에 다음과 같이 UnicodeDecodeError 'cp949' codec can't decode 어쩌고 하는 에러가 발생하여, 패키지 설치가 실패하는 경우가 종종 발생한다. 여러가지 원인들 중에서, 매우 사소한 원인으로 패키지 설치가 실패하는 경우에 대해서 원인을 찾아보고, 패키지를 설치하는 방법에 대해서 알아보자. 테스트..
[Win32] CharLowerA(utf8str) 은 문제가 생길 수 있다. utf-8 인코딩된 한글 문자열에 대해서 CharLowerA 를 적용하면, 문자가 깨질 수 있다. char utf8str[200];WCHAR s1[200] = L"제공호";WCHAR s2[200]; // s1 을 utf8 인코딩으로 변환하여 utf8str 을 채운다. (WideCharToMultiByte 등을 사용.) CharLowerA(utf8str); // utf8str 중에서 알파벳만 모두 소문자로 바꾸려 한다. // 변경된 utf8str 을 unicode 로 변환하여, s2 에 저장한다. (MultiByteToWideChar 등을 사용.) cmp = wcscmp(CharLowerW(s1), s2); 위 코드에서 두가지 경로로 문자를 소문자화하여 비교한다.1. s1 -> utf8로 인코딩 -> Ch..