메모내용

언리얼 문자열

왜 언리얼은 문자열을 따로 지정하는가

운영체제별 지원하는 문자열이 다르고, 나라별 언어를 표기하는데 바이트가 다 다르다.

UTF-8

메모리를 적게 사용한다.
영문권 캐릭터 -> 1byte
동아시아 캐릭터 -> 2byte
혼합된 방식

UTF-16

무조건 2Byte
메모리를 더 사용한다
데이터 저장할때 깔끔하게 정렬된 데이터를 얻을 수 있다.

언리얼 내부 스트링 표현

언리얼 엔진의 모든 스트링은 FStrings 혹은 TCHAR 정렬상태로 UTF-16 포맷 메모리에 저장됩니다.
스트링은 현 플랫폼에 적합한 엔디안에 저장됩니다.

디스크 또는 네트워킹 도중 패키지를 serialize 할때 0xff 보다 작은 모든 TCHAR 캐릭터 스트링은
8 비트 바이트 시리즈로 저장되고, 그외에는 2 바이트의 UTF-16 스트링으로 저장됩니다.
serialize 코드는 필요에 따라 어떤 엔디안 변환도 다룰 수 있습니다. br

UE4 에 로드되는 텍스트 파일

언리얼이 외부 텍스트 파일을 로드할때 ( 예시로 실행시간에 .INT 파일을 읽을때) 는
거의 항상 UnMisc.cpp 에서 찾을 수 있는 appLoadFileToString() 함수로 해결합니다.
작업은 주로 app BufferToString() 함수에서 일어납니다.

이 함수는 UTF-16 파일에서
유니코드 바이트-오더-마크 을 인식하고,

( Byte-Order-Mark, BOM, 문서 앞에 3byte 헤더가 들어가 어떤 UTF 문서인지 지정하는 마크,
윈도우의 경우 BOM 을 넣어서 저장하지만, 리눅스의 경우 BOM 을 읽지 않는다고 한다. )
있으면 어느 엔디안으로든 UTF-16 으로 파일을 로드합니다 . BOM 마크가 없을때 발생하는 일은 플랫폼에 따라 달라집니다.

언리얼에서 사용되는 텍스트파일용 추천 인코딩

INT 와 INI 파일

추천 UTF-16

Source code

가급적 UTF-8 을 사용하도록 한다.
하지만 한글은 문제가 있을수 있으니 쓰지 않는것이 좋으나 감안하고 사용해야 한다.

TEXT()

언리얼 엔진은 문자열을 생성할 때 모든 플랫폼에서 2 byte 문자열 체계를 동일하게 유지시키는 TEXT("문자열") 매크로를 제공한다.

문자열 타입 전환

                    
FString FText::ToString();
FString FName::ToString();

FText FText::FromString(FString str);
FText FText::FromName(FName str);

FName FName(*FString str);