【UE5】日本語文字化け その2【C++】

この記事は約2分で読めます。

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

【UE5】日本語文字化け【VS2022】
Unreal Editorのログなどに日本語を表示させようとすると文字化けする。VS2022のソースファイルがデフォルトでシフトJISになっているせい。ソースファイルをUTF-8で保存してあげれば直せる。低レベルかもしれないやり方VS202...

今回は、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を使えば必要ない。あまりに素晴らしいので書き記しておきたくなった。

コメント

タイトルとURLをコピーしました