关于 UE4 (虚幻引擎4)使用VS编译时输出窗口出现乱码的解决办法

关于 UE4《虚幻引擎4》使用VS编译时输出窗口出现乱码的解决办法

  • 首先说说VS中如何启用UTF-8编码(但仅在VS中启用UTF-8编码并不能解决UE4的编译输出乱码问题,请往后看):

1:

  • 如果你的源文件中只有英文,没有汉字,那你这个文件本身实际上就是UTF-8格式的,什么都不用做。
  • 如果你的源文件中有汉字,那这个文件通常就是GBK格式的,在VS中打开你这个文件,再点击菜单“文件 - xxx.cpp另存为 - 点击保存按钮右侧的下拉箭头 - 编码保存 - 选择Unicode(UTF-8 无签名) - 确定”,(或者选择Unicode(UTF-8 带签名) ,这样这个文件就是UTF-8编码格式的了。

2:

  • 如果每个文件都像上面手工操作,太麻烦了,可以下载一个VS插件,在VS的菜单 - 工具 - 扩展和更新 - 联机 - 中搜索UTF,下载Force UTF-8插件,这样你每次保存文件时会自动保存为UTF-8格式的。

3:

在VS项目上右键 - 属性 - C/C++ - 命令行 - 添加额外命令 /utf-8 (红色部分的内容)

总结:

  • 当你在网上搜索如何在VS中使用UTF-8编码时,通常告诉你的都是以上3个办法,但这些办法能真正的解决问题吗?
  • 并不能
  • 如果在办法1中“选择Unicode(UTF-8 无签名)”,此时用VS编译代码时可能会提示“常量中有换行符”这样的错误,为什么呢?因为VS对NO BOM的UTF-8编码支持不完善。
  • 如果在办法1“选择Unicode(UTF-8 带签名)”,当你要在linux下使用这些文件时,而且使用了对“有BOM”的UTF-8支持不好的编译器时,也会出现问题。
  • 再说办法3的“C/C++ - 命令行 - 添加额外命令 /utf-8”,这也有问题,问题是“当代码里面有中文的话,调试时会错乱,无法定位到所执行代码的正确行号。”原因大致可能是“虽然源码编译时是UTF8的了,但是调试器仍然是按GBK格式解析的,所以调试时代码行数定位会出错”。
  • 我曾经因为要跨平台编程,所以找了很久的如何在VS中使用UTF-8编码的解决方案,但始终都没有找到一个真正完善有用的方案。
  • 这个UTF-8编码的问题直到win 10 出来以后,才有了一个相对完善的解决方案。
  • 在win 10 系统中,打开控制面板 - 区域和语言 - 管理 - 选中“使用Unicode UTF-8 提供全球语言支持” - 确定。如下:关于 UE4 (虚幻引擎4)使用VS编译时输出窗口出现乱码的解决办法_第1张图片
  • 这样就根治了在VS中无法真正使用UTF-8编码的问题。编译UE4的源码或项目时,输出窗口也不会出现乱码了。
  • 但是这样做虽然彻底解决了VS和UTF-8的问题,却给系统中的其它方面带来了问题,主要是你以前保存的一些txt文档内容变成乱码了,以及其它一些软件显示也出现了乱码。
  • TXT文档乱码好解决,用notepad++转换一下即可,或者用我写好的小工具批量转换也可以,GBK和UTF-8批量转换工具带源码 https://github.com/zhllxt/GBKUTF8Convert 而EXE界面乱码就没有办法了。

你可能感兴趣的:(乱码,gbk,utf,visual,studio,unreal)