前回の【UE5】日本語文字化け【VS2022】は、素の状態のVS2022でソースファイルの中に日本語を定義してUEで出力すると文字化けするから、ソースファイルをUTF-8で保存するようにして解決しようって話だった。

今回は、UTF-8で書いたデータファイルをプログラムで読み込んでUEで出力すると文字化けするのを何とかするって話。
UTF-8のファイルを読んでそのまま出力すると文字化けする。wcharにしてやる必要がある。それらの変換ルーチンはネットにごろごろ落ちていると思うが、Unreal EngineにはStringConv.hという至れり尽くせりのファイルがあって、その中に変換用のマクロがある。
俺は昨年9月からUE5の勉強を始めたばかりで、UE4までの話は知らないんだが、StringConv.hによれば、UTF8_TO_TCHAR を使っていたはず。ただし、これはUE5.xxでもう使わないでほしいとStringConv.hに書いてある。その代わりにStringCastを使えと。
auto Conv1 = StringCast<TCHAR>((const UTF8CHAR*)AnsiCharPtr); // Use Conv1.Get() and Conv1.Length()
auto Conv2 = StringCast<TCHAR>(UTF8CharPtr); // Use Conv2.Get() and Conv2.Length()
まだ新しいC++の勉強不足で、auto というステートメントを知らないんだが、まあ最近の言語の型定義不要の変数ってわけだろう。
ソースポインタが UTF8CHAR じゃない場合は、const UTF8CHAR*でキャストしてやらないとコンパイルエラーになる。
このStringCast自体もStringConv.hに書いてある。
UTF8_TO_TCHARを使う場合は自分で逆シリアル化しなきゃならなかったと思うが、StringCastを使えば必要ない。あまりに素晴らしいので書き記しておきたくなった。
コメント