首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次我构建一个虚幻的引擎项目时,vs都会像这样警告: unable to get MBCS string

每次我构建一个虚幻的引擎项目时,vs都会像这样警告: unable to get MBCS string
EN

Stack Overflow用户
提问于 2020-06-20 03:24:27
回答 2查看 739关注 0票数 1
代码语言:javascript
复制
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)。

EN

回答 2

Stack Overflow用户

发布于 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警告转换。如果您读取或转换的字符串与您的语言设置正确,则可以忽略此警告。但是尝试使用您的所有语言字符进行一些转换,以检查所有字符是否都转换良好。否则,您可以使用以下命令强制进行语言转换:

代码语言:javascript
复制
string utf8String = Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(text));

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

票数 1
EN

Stack Overflow用户

发布于 2020-06-21 21:56:38

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62477257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档