最近在网上找题做的时候,写了一个程序,写完了之后直接在Windows下的编译环境编译没问题,可以正常运行(环境:Win10,QCreator4,Qt5.13,MinGW),然后复制到Linux系统下(环境:Fedora9,QCeator2,Qt4.7,GCC)编译,然后编译时出现报错(代码做过修改,在ubuntu10.4,QCeator2,Qt4.8.3环境下成功编译并运行),编译不通过,提示程序有游离的’\357’,’\277’,‘273’。把程序拷回Windows后,打开.pro文件出错,报错Cannot read D:/…/…/…/xxx.pro: Unexpected UTF-8 BOM。在网上查询了一下,发现在Linux系统下的问题原因也是文件内含有UTF-8 BOM,而低版本的编译器不支持BOM导致的报错。
我的解决办法是在Windows环境下用记事本打开.pro、.cpp、.h文件,然后另存为UTF-8不带BOM,这样成功解决了Linux下无法运行的问题,然后用同样的方法在Windows下尝试,也可以解决。
但是在Windows环境下只需要修改.pro文件,因为貌似在Windows环境下只有qmake不支持带BOM的UTF-8。我个人的理解是qmake步骤 只用于读取.pro文件然后生成构建目录,但是不支持BOM,编译是靠makefile步骤,而和Qt一起安装的MinGW编译器可以支持BOM。
本文描述了在不同操作系统和编译环境下,由于UTF-8BOM引起的编译错误问题及解决方案。作者在从Windows(QCreator4,Qt5.13,MinGW)迁移到Linux(Fedora9,QCeator2,Qt4.7,GCC)时遇到编译错误,通过将文件另存为UTF-8无BOM格式成功解决。
1247

被折叠的 条评论
为什么被折叠?



