使用的UE4版本:4.26-chaos源码版


在UE4使用steam在线子系统时,在查询到SessonResult时,读取SessionSettings设置的Value如果是亚洲文字的话,读取是乱码

xxxInstance.cpp

...FOnlineSessionSetting ExtraSetting;// 设置settings键值ExtraSetting.Data = *HostName.ToString();ExtraSetting.AdvertisementType = EOnlineDataAdvertisementType::ViaOnlineService;SessionSettings.Settings.Add(FName("SERVER_NAME"), ExtraSetting);
...
    // 查询到某个SessionResult, 获取settings的键值FString serverNameString;OnlineSearchResult.Session.SessionSettings.Get(FName("SERVER_NAME"), serverNameString);

这样的serverNameString显示的都是 ???

原因是在源码中SetValue时FString转的是ANSI;

源码位置在 Engine\Plugins\Online\OnlineSubsystemSteam\Source\Private\SteamSessionKeys.h

...case EOnlineKeyValuePairDataType::String:KeyStr = FString::Printf(TEXT("%s_s"), *Key.ToString());break;...inline bool SteamKeyToSessionSetting(const TCHAR* SteamKey, const ANSICHAR* SteamValue, FName& Key, FOnlineSessionSetting& Setting)
{bool bSuccess = false;TCHAR SteamKeyCopy[1024];FCString::Strncpy(SteamKeyCopy, SteamKey, UE_ARRAY_COUNT(SteamKeyCopy));TCHAR* DataType = FCString::Strrchr(SteamKeyCopy, '_');if (DataType){bSuccess = true;// NULL Terminate the key*DataType = '\0';Key = FName(SteamKeyCopy);// Advance to the data typeDataType += 1;switch(DataType[0]){case 'i':Setting.Data.SetValue((int32)0);Setting.Data.FromString(ANSI_TO_TCHAR(SteamValue));break;case 'l':Setting.Data.SetValue((uint64)0);Setting.Data.FromString(ANSI_TO_TCHAR(SteamValue));break;case 'd':Setting.Data.SetValue((double)0);Setting.Data.FromString(ANSI_TO_TCHAR(SteamValue));break;case 's':Setting.Data.SetValue(ANSI_TO_TCHAR(SteamValue));  // 这里的问题//改成Setting.Data.SetValue(UTF8_TO_TCHAR(SteamValue)); break;case 'f':Setting.Data.SetValue((float)0);Setting.Data.FromString(ANSI_TO_TCHAR(SteamValue));break;case 'b':Setting.Data.SetValue(false);Setting.Data.FromString(ANSI_TO_TCHAR(SteamValue));break;default:bSuccess = false;}}if (!bSuccess){UE_LOG_ONLINE_SESSION(Warning, TEXT("Unknown or unsupported data type from Steam key data %s %s"), SteamKey, ANSI_TO_TCHAR(SteamValue));}return bSuccess;
}

改一个地方

把 Setting.Data.SetValue(ANSI_TO_TCHAR(SteamValue)); 改成 Setting.Data.SetValue(UTF8_TO_TCHAR(SteamValue))

然后把ue4editor关掉;

再把引擎源码build一下;

再compile运行,亚洲文字就能显示了

UE4读取steam sessionsetting中Value是亚洲文字时 乱码/ UE4 fix asian character garbled when get sessionsetting相关推荐

  1. UE4 获取steam昵称 亚洲文字 显示乱码

    const char* friendName = SteamFriends()->GetFriendPersonaName(friendSteamID); FString friendNameS ...

  2. UE4使用steam子系统(发布steam包)

    以4.21版本为例 1.复制steam程序中的dll文件至本地引擎文件内 *\UE_4.21\Engine\Binaries\ThirdParty\Steamworks\Steamv139 2.最终结 ...

  3. UE4联网Steam

    LAN联网很简单相信大家都会了,现在跟大家分享下Steam联网的设置 参考:https://wiki.unrealengine.com/Steam,_Using_the_Steam_SDK_Durin ...

  4. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  5. 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,有位朋友在群里面咨询了一个问题:如何读取Excel表格中"不同sheet表"的同一位置单元格数据,并绘制条形图呢? 有人提议 ...

  6. python中读取文件过程中seek()函数的使用

    python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...

  7. python pandas库读取excel/csv中指定行或列数据详解

    通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...

  8. @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值

    @PropertySource读取外部配置文件中的k-v保存到运行的环境变量中,加载完微博的配置文件以后使用${}取配置文件中的键值 该注解value={},可以使用String数组形式,读取多个配置 ...

  9. 这一次,脑机接口可以实时读取人类脑中画面了?

    来源:机器之心 由俄罗斯脑机接口公司 Neurobotics.莫斯科物理技术学院(MIPT)研发的一种全新脑机接口算法最近被公之于众,它可以利用人工神经网络和脑电图将人类大脑中的图像实时显示在计算机屏 ...

  10. SpringMVC通过注解方式读取properties文件中的值

    为什么80%的码农都做不了架构师?>>>    本方法是结合Java配置及XML配置来完成. 首先定义XML配置文件 app.xml: <?xml version=" ...

最新文章

  1. Motan的SPI机制实现分析
  2. CentOS 迎来更新换代版本 CentOS Stream 9 附下载镜像OS地址
  3. excel表格不够怎么添加_这个Excel表格,怎么做的这么漂亮
  4. image copy oracle,RMAN删除image copy时遇到的问题
  5. 好机会,我要帮女同事解决Maven冲突问题
  6. sql判断时间差值_Oracle判断某人员在某地是否有超过指定时间的停留
  7. 美图秀秀滤镜之饱和度
  8. Response.End(); 用HttpContext.Current.ApplicationInstance.CompleteRequest 代替
  9. 中国1,3二甲基-2-咪唑啉酮行业市场供需与战略研究报告
  10. 一文了解电竞游戏平台的大数据玩法儿!
  11. tarjan求桥、割顶
  12. python中int什么意思_python中int是什么意思
  13. 面向价值实现的数据资产管理体系构建
  14. 365天历史时间顺序读经计划表
  15. 版本控制之最佳实践(Git版)
  16. 中文文本分类 传统机器学习+深度学习
  17. DDD学习(一)——通用语言
  18. 标梵详解CSS去除浮动的方法
  19. python夯实基础日记-字典、集合、分支、循环
  20. Excel导出+解析通用工具类

热门文章

  1. java实现邮箱推送
  2. 真相了!关于“写书”这件事
  3. 量化交易18-先认识K线形态:下跌形态:十字暮星、暮星、墓碑十字/倒T十字、上吊线、风高浪大线、修正陷阱、颈内线、颈上线、黄包车夫、纺锤、停顿形态、条形三明治
  4. 粪斗这杆大旗下,注定只是少部分人的盛宴
  5. 管理好项目——带好技术团队的秘籍
  6. 关于PBOC3.0发卡行认证的问题
  7. 面向后端的前端技术分享
  8. 计算小于100的最大素数
  9. 基于Gromacs的蜘蛛毒素肽显性溶剂动力学分析
  10. CAD制图中该怎么查找文字呢?