簡體   English   中英

每次我構建一個虛幻引擎項目時,vs都會發出這樣的警告:無法獲取MBCS字符串

[英]Everytime I build a unreal engine project, vs keeps warning like this: unable to get MBCS string

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 ----------------------

編譯沒有問題,但是這個警告一直出現在 output window 上。 這只是一件與我正在制作的游戲無關的小事嗎? 還是以后會出問題? 我用谷歌搜索了這個警告,但我找不到任何東西。 我為解決它所做的是將引擎版本降級到 4.24,重新安裝 VS 和 UE4,安裝 MSVC v141、v140(版本 2017、2015)。

這是來自UE4 內部字符串表示的示例

UE4 內部字符串表示:虛幻引擎 4 (UE4) 中的所有字符串都以 UTF-16 格式作為 FStrings 或 TCHAR arrays 存儲在 memory 中。 大多數代碼假定 2 個字節是一個代碼點,因此僅支持基本多語言平面 (BMP),因此 Unreal 的內部編碼更准確地描述為 UCS-2。 字符串以適合當前平台的字節序存儲。 在將包序列化到磁盤/從磁盤或網絡期間,所有 TCHAR 字符小於 0xff 的字符串存儲為一系列 8 位字節,否則存儲為 2 字節 UTF-16 字符串。 序列化代碼可以根據需要處理任何字節序轉換。 當 Unreal 加載一個外部文本文件(例如在運行時讀取一個 .INT 文件)時,幾乎總是使用 UnMisc.cpp 中的 appLoadFileToString() function 來完成。 主要工作發生在 appBufferToString() function 中。 此 function 可識別 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_SIN... )。 這是在 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

哇,這是因為 IncreBuild。 我刪除了它,警告不再出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM