某些情况下,BIOS编译过程中会收到 Warning C4819 的错误信息。
Warning C4819:The file contains a character that can ot be represented in the current code page(936). save the file in unicode format to prevent data loss.
中文意思是:该文件包含不能在当前代码页中表示的字符,请将文件保存为Unicode格式,以防止数据丢失。【参考1】
简单的说产生的原因是源代码中有和你当前系统中 codepage 中不兼容无法表示的编码。这只是一个Warning 信息,只是因为 BIOS编译过程打开了 Warning as error 所以会导致编译停止。这样的字符通常处于注释中,程序员情不自禁的用了本地字符导致的。
了解了原因,有下面的解决方法:
1.换用英文版的OS,一劳永逸的方法;
2.在出现问题的文件关闭warning功能;
3.找到出现Warning的文件用NotePad打开,再按照ANSI格式保存一下;
只是上面都比较麻烦,特别是某些时候涉及到有这样问题的程序很多,你无法知道需要重复上面的动作多少次。
于是编写了这个工具用来解决这个问题,具体的原理是:逐个打开源文件,然后转换编码为当前系统的CodePage,比较转换前后,如果结果相同表明没有无法识别的编码字符;如果不同,首先改名原文件做备份,再将转换编码后的文件保存下来。
特别注意:
1.请确保使用这个工具之前你的源文件有备份
2.请确保源文件去掉只读属性
下载:
参考:
1.http://www.cnblogs.com/rainbowzc/archive/2009/07/02/1515427.html 不再经受"Warning C4819"的摧残(转)
本文首发于 BIOSren 论坛 http://biosren.com/viewthread.php?tid=7582&rpid=57253&fav=yes&ordertype=0&page=1#pid57253