积极答复者
使用nmake编译工程,含UTF-8非ASCII字符的源文件会出现问题,如何处理

问题
-
我在编译Qt,其中包含的一些文件的注释里面包含非ASCII的UTF-8字符,会有错误提示说含有非法字符,可能导致一系列语法错误。其实就是源码的注释中有一些表格。
例如:
e:\library\qt-everywhere-opensource-src-5.9.1\qtwebengine\src\3rdparty\chromium\url\scheme_host_port.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
有时候会导致语法错误,有时候不会,这完全看运气。
nmake如何才能避免这些错误呢?
- 已编辑 srhouyu 2017年7月13日 9:57
答案
-
>>谢谢解惑。是不是意味着这个问题必须通过修改源文件来实现?
不知道能不能进行批量操作?因为存在问题的源文件很多很分散,一个个操作不太现实。而且,若是源文件有了新版本,一更新可能又会恢复成问题文件。
据我所知,vs中只有这两种方式可以解决该问题。你也可以添加4819到你的项目属性->C/C++->Advanced->Disable Specific Warnings。或者添加 /wd4819 命令到你的项目属性->C/C++->Command Line中。这样可以屏蔽这个warning。
对于源文件的问题,建议你到QT论坛询问是否有办法批量解决。MSDN不负责解决第三方库文件的问题。谢谢你的理解与支持。
Best Regards,
Sera Yu
MSDN Community Support<br/> Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.
- 已标记为答案 srhouyu 2017年7月23日 12:36
全部回复
-
Hi srhouyu,
感谢在MSDN论坛发帖。
>>我在编译Qt,其中包含的一些文件的注释里面包含非ASCII的UTF-8字符,会有错误提示说含有非法字符,可能导致一系列语法错误。其实就是源码的注释中有一些表格。
例如:
e:\library\qt-everywhere-opensource-src-5.9.1\qtwebengine\src\3rdparty\chromium\url\scheme_host_port.h: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
对于这个问题我建议你采取以下两种方式解决。
1. 打开出错的文件,选择文件->高级保存选项->编码,改为unicode格式。
2. 选择出错文件,编辑->高级->格式化文档。
希望对你有所帮助。
Best Regards,
Sera YuMSDN Community Support<br/> Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.
-
>>谢谢解惑。是不是意味着这个问题必须通过修改源文件来实现?
不知道能不能进行批量操作?因为存在问题的源文件很多很分散,一个个操作不太现实。而且,若是源文件有了新版本,一更新可能又会恢复成问题文件。
据我所知,vs中只有这两种方式可以解决该问题。你也可以添加4819到你的项目属性->C/C++->Advanced->Disable Specific Warnings。或者添加 /wd4819 命令到你的项目属性->C/C++->Command Line中。这样可以屏蔽这个warning。
对于源文件的问题,建议你到QT论坛询问是否有办法批量解决。MSDN不负责解决第三方库文件的问题。谢谢你的理解与支持。
Best Regards,
Sera Yu
MSDN Community Support<br/> Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.
- 已标记为答案 srhouyu 2017年7月23日 12:36