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 |