1
2>    --------------------Project: Default-------------------------------------------
2>    MyProjectCharacter.cpp (0:01.59 at +0:00)
2>    EXEC : warning : unable to get MBCS string (input text '??: ?? ??:%s%s
2>    ', library C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\1042\clui.dll)
2>    UE4Editor-MyProject-0002.dll (0:00.68 at +0:01)
2>       Creating library C:\Users\grand\GameDev\MyProject\Intermediate\Build\Win64\UE4Editor\Development\MyProject\UE4Editor-MyProject-0002.suppressed.lib and object C:\Users\grand\GameDev\MyProject\Intermediate\Build\Win64\UE4Editor\Development\MyProject\UE4Editor-MyProject-0002.suppressed.exp
2>    UE4Editor-MyProject-0002.lib (0:00.07 at +0:02)
2>       Creating library C:\Users\grand\GameDev\MyProject\Intermediate\Build\Win64\UE4Editor\Development\MyProject\UE4Editor-MyProject-0002.lib and object C:\Users\grand\GameDev\MyProject\Intermediate\Build\Win64\UE4Editor\Development\MyProject\UE4Editor-MyProject-0002.exp
2>    MyProjectEditor.target (0:00.17 at +0:02)
2>    ---------------------- Done ----------------------

编译没有问题,但是这个警告一直显示在输出窗口上。这只是一件与我正在制作的游戏无关的小事吗?还是以后会出问题?我用谷歌搜索了这个警告,但我找不到任何东西。我为解决它所做的是将引擎版本降级到 4.24,重新安装 VS 和 UE4,安装 MSVC v141、v140(版本 2017、2015)。

4

2 回答 2

1

这是来自UE4 内部字符串表示的示例

UE4 内部字符串表示:虚幻引擎 4 (UE4) 中的所有字符串都以 UTF-16 格式作为 FStrings 或 TCHAR 数组存储在内存中。大多数代码假定 2 个字节是一个代码点,因此仅支持基本多语言平面 (BMP),因此 Unreal 的内部编码更准确地描述为 UCS-2。字符串存储在适合当前平台的字节序中。在将包序列化到磁盘/从磁盘或网络期间,所有 TCHAR 字符小于 0xff 的字符串存储为一系列 8 位字节,否则存储为 2 字节 UTF-16 字符串。序列化代码可以根据需要处理任何字节序转换。当 Unreal 加载外部文本文件(例如在运行时读取 .INT 文件)时,几乎总是使用 UnMisc.cpp 中的 appLoadFileToString() 函数来完成。主要工作发生在 appBufferToString() 函数中。此函数识别 UTF-16 文件中的 Unicode 字节顺序标记 (BOM),如果存在,将以任一字节顺序将文件加载为 UTF-16。当 BOM 不存在时会发生什么取决于平台。在 Windows 上,它将尝试使用默认的 Windows MBCS 编码将文本转换为 UTF-16(例如Windows-1252 for US English and Western Europe, CP949 for Korean and CP932 for Japanese) 并使用MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS...)。这是在 2009 年 7 月的 QA 版本中添加的。如果此转换在 Windows 以外的平台上失败,它只会读取每个字节并将其填充到 16 位以生成 TCHAR 数组。请注意,没有代码可以检测或解码使用 appLoadFileToString() 加载的 UTF-8 编码文本文件。

您的程序似乎面临语言 unicode 警告转换。如果您读取或转换的字符串在您的语言设置中是正确的,那么您可以忽略此警告。但是尝试对所有语言字符进行一些转换,以检查是否都转换得很好。否则,您可以使用以下命令强制进行语言转换:

string utf8String = Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text));

也看看这个 SO 问题:How to convert Unicode string to a TCHAR system with Unreal project

于 2020-06-20T07:46:21.487 回答
0

哇,这是因为 IncreBuild。我删除了它,警告不再出现。

于 2020-06-21T13:56:37.703 回答