728x90
반응형
Unicode
유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다. 이는 유니코드 협회가 제정한다. 현재 컴퓨터에서 널리 사용되는 거의 모든 문자를 포함하며 110만 개 이상의 코드 포인트를 지정할 수 있다. 제록스와 애플의 공동 작업이 시초라 알려져 있다. 이후 여러 기업이 참여한 임시 위원회가 구성되었고 IBM와 Microsoft를 비롯한 다수의 기업이 참가하여 1991년에 유니코드 컨소시엄을 설립하였고 현재 주도적인 여러 IT 기업이 여기에 참여하고 있다.
Unicode 문서의 Header에 BOM(Byte Of Mark)을 확인하자
BOM은 Bye의 순서 표시다. Unicode의 파일이 시작되는 첫 부분에 보이지 않게, 2~3 Byte의 문자열을 추가하는데 이것을 BOM이라고 한다. Text Editor 화면에서는 보이지 않고, Hex Editor에서만 보인다.
형식 | BOM |
Little-endian | FF FE |
Big-endian | FE FF |
UTF-8 | EF BB BF |
다음과 같이 2BYTE를 읽어 little-endian인지 확인한다. 유니코드는 텍스트 파일로 읽고/저장할 때 제대로 동작하지 않기 때문에 _fgetws로 읽으면 이상한 글자가 읽히게 된다.
//UniCode BOM 검사
fread(&read_line, sizeof(wchar_t), 1, fp);
if (read_line[0] != (wchar_t)0xFEFF)
{
fclose(fp);
return;
}
BOM 검사가 끝나면 fread로 나머지를 모두 읽은 후, 기존의 방식대로 substr 하여 사용하면 된다.
저장할 때에도 마찬가지로 선두에 유니코드를 나타내는 BOM을 작성해야 한다.
//UniCode BOM 출력
wchar_t head = 0xFEFF;
fwrite((void *)&head, sizeof(wchar_t), 1, fp);
제대로 읽어오는 것을 볼 수 있다.
728x90
반응형
'코드 > MFC' 카테고리의 다른 글
(MFC) 디렉토리 선택 코드 (0) | 2024.05.22 |
---|---|
[MFC] 따라하기 05. 여러 개의 원 그리기 (0) | 2022.03.08 |
[MFC] 따라하기 04. 원이 그려지는 동작 만들기 (0) | 2022.03.08 |
[MFC] 따라하기 03. Edit box를 이용하여 여러 개의 사각형 그리기 (0) | 2022.03.02 |
[MFC] 따라하기 02. 버튼을 이용하여 사각형 그리기/지우기 (0) | 2022.03.02 |