반응형

Unreal에서 Blueprint에서 보통 한글을 사용하다보니, C++에서 한글을 출력하려고 하니 에러가...


한글 대신 ????가 나오던가 상형문자들이 등장하기 시작했다.


한글을 나오게 하려고 별의 별 방법을 다 사용해 본 것 같다.


std::string 으로 직접 받아서 UTF8로 변환도 해보고, UTF8을 FString으로 변환해보고, FName, FTEXT 등등...


검색해서 할 수 있을 만한거는 거의 다 해본 것 같았는데..


정말 어이없는 방법으로 해결이 되었다.


오류가 났던 스크린 샷은 다시 돌릴 수 없는 관계로 생략!


간단히 설명드리면, 


FString testString = TEXT("한글 테스트 완료");

UE_LOG(LogTemp, Warning, TEXT("%s"), *testString);

GEngine->AddOnScreenDebugMessage(1, 5.0f, FColor::Red, testString);


간단하게 위의 코드로 테스트를 진행했다.


오류가 났을 때에는


?? ??? ?? 또는 상형문자들로 표시가 되었다.


하지만 Blueprint에서 한글을 사용할 때에는 한글의 표시가 아주 잘 되었다.


위의 testString을 FString 인자로 받는 노드 함수를 생성하여 테스트를 한 결과로는, Blueprint에서 입력한 한글 그대로 입력이 되었다.


때문에 C++ 환경에서만 문제가 있는 것.


제가 해결한 방법은, 

Visual Studio 메뉴 → File → Advanced Save Options... →

Encoding : Unicode (UTF-8 with signature) - Codepage 65001 → OK



참고로 변경 전의 설정은 Encoding : Korean - Codepage 949 로 설정되어 있었다.


위와 같이 설정을 변경해준 다음, Unreal Editor에서 컴파일을 해주니... 한글이 아주 잘 나왔다!



하루동안 엄청난 삽질을 했지만... 어이가 없어서 화가 나는 그런 상황...



추가로, 혹시나 궁금한 사람이 있을까봐 추가 정보를 드립니다.


Unreal에서는 Blueprint, C++ 모두 한글을 읽을 때, 2 Byte씩 끊어서 읽는 것이 아니라, 1 Byte씩 끊어서 사용할 수 있습니다!


FString testString = TEXT("한글 테스트 완료");


for (int i = 0; i < testString.Len(); i++)

{

UE_LOG(LogTemp, Warning, TEXT("%s"), *testString.Mid(i, 1));    // Mid : i 번째 인덱스부터, n 번째 인덱스까지 자름 (즉, 1글자씩 자름)

}



반응형

'게임 개발 끄적 > Unreal (C++)' 카테고리의 다른 글

[UE4] Garbage Collector  (1) 2019.02.08
[UE4] Thread  (0) 2018.06.21
[UE4] Voice Capture  (0) 2018.03.20
[UE4] Render Capture Scene  (0) 2018.03.19
[UE4] File Copy & Explorer  (0) 2018.03.19

+ Recent posts