お世話になっております。
5.7.4時点で問題を確認しており、5.8.0でも同様の現象を確認したため報告させていただきます。
前置きとして
既存のNotification実装を拡張し、Teams向けのNotificationを作成・専用にカスタマイズしているため
既存実装での動作確認フローまでは把握できておりません。
また、お恥ずかしながら私自身文字コードに疎い部分がありまして、ここをこうしたら直りました程度の報告となってしまう点、ご了承くださいませ。
◆ 原因となったファイル
5.7.4 : Engine\Source\Programs\Shared\EpicGames.Core\JsonLogEvent.cs
5.8.0 : Engine\Source\Programs\Shared\EpicGames.Core\Logging\JsonLogEvent.cs
◆ メソッド
EpicGames.Core.JsonLogEvent.GetRenderedMessage()
▼ 修正前
return new Utf8String(reader.GetUtf8String().ToArray());
▼ 修正後
string? s = reader.GetString();
return s != null ? new Utf8String(s) : Utf8String.Empty;
Utf8JsonReaderには GetUtf8String()とGetString()があり、
前者はバイト列(未加工/場合によってはエスケープ処理の扱いに差が出る)を返すことがある一方、
GetString()はJSONのエスケープ(\uXXXX 等)を正しく.NET string(UTF-16)へデコードして返しているようです。
現在の実装はバイト列経由でUtf8Stringを作り、後でUtf8String.ToString()(Encoding.UTF8.GetString)でデコードするため、
エスケープの二重扱いやバイト/文字列の取り扱い差で文字化けが発生していそうです。
GetRenderedMessage()でreader.GetString()を使い、得られた.NET stringからUtf8Stringを生成する。
これならJSONの\uXXXXが正しくデコードされ、以後Utf8String.ToString()しても文字化けしない形となりました。
Horde関連で2バイト文字を扱う上では各所で気を付けるべきことがありますが、こちらはかなり根が深いところにあるようです。
Horde Serverだけに適用するのであれば手元コードを修正して、Horde Serverインストーラをビルドするだけで済むのですが
UnrealEngine本体側となると修正した際の影響範囲も大きいように思います。
この点こちらでは確認できておりませんが、ご報告まで。
以上、よろしくお願いいたします。
[Attachment Removed]