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(verion 2017,2015)。
发布于 2020-06-20 15:46:21
这是来自UE4 Internal String Representation的示例
UE4内部字符串表示:虚幻引擎4 (UE4)中的所有字符串都以FStrings或TCHAR数组的形式以UTF16格式存储在内存中。大多数代码假设2个字节是一个代码点,因此只支持基本的多语言平面(BMP),因此Unreal的内部编码更准确地描述为UCS-2。字符串以适合当前平台的字节顺序存储。在将所有TCHAR字符小于0xff的字符串序列化到磁盘或从磁盘序列化到包时,字符串将存储为一系列8位字节,否则将存储为2字节UTF-16字符串。序列化代码可以根据需要处理任何字节顺序转换。当虚幻加载外部文本文件(例如,在运行时读取.INT文件)时,它几乎总是由UnMisc.cpp中的appLoadFileToString()函数完成。主要工作发生在appBufferToString()函数中。此函数可识别UTF-16文件中的Unicode字节顺序标记(BOM),如果存在,将以任一字节顺序将文件加载为UTF-16。当BOM不存在时会发生什么,这取决于平台。在Windows上,它会尝试使用默认的Windows MBCS编码(例如Windows-1252 for US English and Western Europe, CP949 for Korean and CP932 for Japanese__)将文本转换为UTF-16,并使用MultiByteToWideChar__(CP_ACP,MB_ERR_INVALID_CHARS...)。这是在2009年7月的QA版本中添加的。如果此转换在Windows以外的平台上失败,它将读取每个字节并将其填充为16位,以生成TCHAR数组。请注意,没有用于检测或解码使用appLoadFileToString()加载的UTF8编码文本文件的代码。
您的程序似乎面临着一种语言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-21 21:56:38
哇,那是因为IncreBuild。我把它删除了,警告不再出现了。
https://stackoverflow.com/questions/62477257
复制相似问题